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

指南:

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

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

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


当前回答

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

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

其他回答

使用管道'|'命令查找文件夹中的文件中的字符串:

dir /b *.* | findstr /f:/ "thepattern"

将输出重定向到控制台,即使批处理的输出已经通过> con语法重定向到文件。

例子: foo.cmd:

echo a
echo b > con

调用:

foo.cmd > output.txt

这将导致“a”输出到output.txt,而“b”输出到控制台。

使用SET /P从文件中设置环境变量

SET /P SVNVERSION=<ver.tmp

犯错就放弃。

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

要从文件的第一行开始设置一个环境变量,我使用以下命令:

rem a.txt contains one line: abc123
set /p DATA=<a.txt
echo data: %DATA%

这将输出:abc123