Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
您可以在批处理文件运行时修改它。例如,如果您希望在批处理文件退出之前看到结果,您可以在文件运行时在文件的末尾添加一个被遗忘的暂停。
请参见在批处理文件运行时更改批处理文件
我个人认为这更像是一个陷阱,而不是一个功能。
其他回答
调用集——将环境变量展开几个层次。
在http://ss64.com/nt/call.html#advanced从另一个SO问题的答案中发现这个批处理文件变量在for循环中初始化
set VarName=Param
set Param=This
call set Answer=%%%Varname%%%
Echo %Answer%
给了
set VarName=Param
set Param=This
call set Answer=%Param%
Echo This
This
而不是用REM或::行乱写脚本,我在每个脚本的顶部执行以下操作:
@echo OFF
goto :START
Description of the script.
Usage:
myscript -parm1|parm2 > result.txt
:START
注意如何使用管道和重定向字符而不转义它们。
HELP
当使用不同的操作系统版本时,了解本机可用的命令是很重要的。在命令提示符处输入HELP可以显示可用的命令,以及它们的功能的简要描述。
cmd.exe /?
这将列出用于启动命令提示符的所有命令行参数,以及更改整个系统行为的注册表调整。
一个非常古老(大约1990年)的技巧来获得环境变量的总大小:
set > test
dir test
del test
使用空格和转义字符完全控制输出:
echo. ^<resourceDir^>/%basedir%/resources^</resourceDir^>