[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[转贴] 歪果仁写的批处理脚本库(含花式技巧集锦)

本帖最后由 CrLf 于 2018-7-11 18:14 编辑

功能挺多的,作者很内行,秀了不少花式技巧
部分代码不太严谨,但是还是可以学到东西
https://github.com/npocmaka/batch.scripts
1

评分人数

本帖最后由 CrLf 于 2018-7-11 18:19 编辑

大概过了一遍,discovers_and_bugs 目录让人印象深刻,相当牛逼
混编应用(hybrids 目录)方面嘛,get了些新技巧,老外的面相当广啊,不过我们也不输
因为俺们有 plp626,所以 DateAndTime、math 方面的函数可以秒杀老外
其他几个目录好像没有什么特别新的知识,跟我们的文明程度差不多...

TOP

砌而不舍,终成摩天。
Thandks For Sharing
QQ 33892006

TOP

在批处理之家里,和这个老外一样如此无聊能钻研各种BUG的也就只有 qzwqzw 了

TOP

这个特性也很有趣
  1. ::Only the last file in the sequence will be affected.Not existing files will be not created
  2. echo #>a>b>c>d>e>f
  3. ::Info will be red only from the last file in the row.Not existing files will be ignored
  4. set /p=<a<b<d<d<e<f
  5. ::All quotes in redirecte in or out files will be ignored
  6. echo #>"a"b"""c"""
  7. type abc
  8. set /p=<a""""b"c"""
复制代码

TOP

本帖最后由 CrLf 于 2018-7-11 18:03 编辑

还有从来没见过的 dpath 和 keys 命令,两个不在 HELP 列表中的内部命令

dpath 能设置 %DPATH% 变量,帮助信息中说是作用类似于对 PATH 变量的附加,然而...除了对 type 有效,其他命令都不认帐
keys 能设置 %KEYS% 变量,可是并没有卵用

TOP

各种 Crash 就不说了,我有比他更致命的 BUG 哈哈哈哈哈

TOP

我们知道可以只输入一个 D:、E: 来切换到其他驱动器根目录
  1. cd C:\test
  2. ::原始路径为 C:\test
  3. D:
  4. ::切换到 D: 盘根目录
  5. C:
  6. ::会回到 C:\test 而非 C: 根目录
  7. set "
  8. ::可以查看各路径下最后一次的工作路径
复制代码
但是歪果仁提供了另一种查看方式:
  1. for %%I in (a: b: c: d: e:) do @echo %~fI
  2. ::比 set " 的结果更清晰
复制代码
而且还有这么一个神奇的现象:
  1. C:\>for %I in (a: b: c: ">:" "&:") do @echo %~fI
  2. C:\>pushd c:
  3. C:\>set "
  4. the output is:
  5. =&:=&:\
  6. =>:=>:\
  7. =A:=A:\
  8. =B:=B:\
  9. =C:=C:\
  10. ....
复制代码

TOP

这个代码说明 for 是先计算需要分配多少个坑(不检查是否重复),然后再往对应的坑里填内容
  1. @@echo off
  2. :::this prints - 1:[i] 2:[] 3:[] 4:[] 5:[] 6:[] 7:[]
  3. for /f "tokens=1,1,1,1,1,1,1" %%a in ("i ii iii iv v vi vii") do (
  4.     @echo 1:[%%a] 2:[%%b] 3:[%%c] 4:[%%d] 5:[%%e] 6:[%%f] 7:[%%g]
  5. )
  6. :::this prints - 1:[i] 2:[ii] 3:[iii] 4:[iv] 5:[] 6:[] 7:[%g]
  7. for /f "tokens=2,3,1-4" %%a in ("i ii iii iv v vi vii") do (
  8.     @echo 1:[%%a] 2:[%%b] 3:[%%c] 4:[%%d] 5:[%%e] 6:[%%f] 7:[%%g]
  9. )
  10. :::this prints - 1:[i] 2:[ii] 3:[iii] 4:[] 5:[] 6:[] 7:[%g]
  11. for /f "tokens=1-3,1-3," %%a in ("i ii iii iv v vi vii") do (
  12.     @echo 1:[%%a] 2:[%%b] 3:[%%c] 4:[%%d] 5:[%%e] 6:[%%f] 7:[%%g]
  13. )
  14. exit /b 0
  15. http://stackoverflow.com/questions/25950181/why-for-f-sets-empty-values-for-repeated-numbers-in-the-rest-of-tokens
复制代码
这个特性好玩

TOP

本帖最后由 CrLf 于 2018-7-11 17:43 编辑

看到了些原来不知道的应用:
  1. fltmc volumes
  2. ::列出卷和文件系统,需要以管理员身份运行
复制代码
  1. bitsadmin
  2. ::原生的上传/下载工具,不过帮助里也说了未来的系统中未必保留此工具
  3. ::详见 https://www.tuicool.com/articles/rqe63qj
复制代码
  1. pushd 路径A
  2. pushd 路径B
  3. pushd
  4. ::不带参数的 pushd 可以罗列堆栈中的路径
复制代码
还有各种有意思的 bug
还有这个论坛:http://ss64.org/

TOP

返回列表