Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?

指南:

每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包

澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。

(请参见:Windows批处理文件:.bat vs .cmd?)


当前回答

犯错就放弃。

IF "%errorlevel%" NEQ "0" (
   echo "ERROR:  Something broke.  Bailing out."
   exit /B 1
)

其他回答

对于具有数字计数器的循环(输出1到10):

for /l %i in (1,1,10) do echo %i

使用空格和转义字符完全控制输出:

echo.    ^<resourceDir^>/%basedir%/resources^</resourceDir^>

批处理文件中的数组。

设置一个值:

set count=1
set var%count%=42

在命令行提取一个值:

call echo %var%count%%

从批处理文件中提取一个值:

call echo %%var%count%%%

注意额外的扫射%符号。

这项技术可能看起来有点复杂,但它非常有用。如上所述,将打印var1(即42)的内容。如果我们想将其他变量设置为var1中的值,也可以用set替换echo命令。这意味着下面的值在命令行是有效的赋值:

call set x=%var%count%%

然后查看va1的值:

echo %x%

允许您更改目录基于环境变量没有 必须指定'%'指令。如果指定的变量没有 存在,然后尝试目录名。

@if defined %1 (call cd "%%%1%%") else (call cd %1)

没有编辑器,需要创建一个批处理文件?

copy con test.bat

只需输入命令,按enter键输入新行。 按Ctrl-Z和Enter关闭文件。