Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
递归搜索目录树中的字符串:
findstr /S /C:"string literal" *.*
你也可以使用正则表达式:
findstr /S /R "^ERROR" *.log
递归文件搜索:
dir /S myfile.txt
其他回答
使用copy追加文件:
copy file1.txt+file2.txt+file3.txt append.txt
另外,将所有CLI参数设置为一个变量:
SET MSG=%*
这将使用空格分隔的每个单词(或符号)并将其保存到单个批处理文件变量中。从技术上讲,每个参数都是%1、%2、$3等等,但是这个SET命令使用通配符来引用stdin中的每个参数。
批处理文件:
@SET MSG=%*
@echo %MSG%
命令行:
C:\test>test.bat Hello World!
Hello World!
我总是发现很难阅读每行用关键字标记的注释:
REM blah blah blah
易于阅读:
:: blah blah blah
HELP
当使用不同的操作系统版本时,了解本机可用的命令是很重要的。在命令提示符处输入HELP可以显示可用的命令,以及它们的功能的简要描述。
cmd.exe /?
这将列出用于启动命令提示符的所有命令行参数,以及更改整个系统行为的注册表调整。
继续行:
call C:\WINDOWS\system32\ntbackup.exe ^
backup ^
/V:yes ^
/R:no ^
/RS:no ^
/HC:off ^
/M normal ^
/L:s ^
@daily.bks ^
/F daily.bkf
输出一个空行:
echo.