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

指南:

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

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

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


当前回答

一行中包含多个命令,在很多情况下都很有用:

&用于组合两个命令,执行command1和command2 &&一个条件组合,如果command1成功完成,则执行command2 仅当command1未成功完成时才执行Command2。

例子:

:: ** Edit the most recent .TXT file and exit, useful in a .CMD / .BAT **
FOR /F %%I IN ('DIR *.TXT /B /O:-N') DO NOTEPAD %%I & EXIT


:: ** If exist any .TXT file, display the list in NOTEPAD, if not it 
:: ** exits without any error (note the && and the 2> error redirection)
DIR *.TXT > TXT.LST 2> NUL && NOTEPAD TXT.LST

其他回答

IF命令!没有它,我的批处理文件是垃圾!

@echo off
IF exist %windir%\system32\iexplore.exe goto end

echo Hmm... it seems you do not have Internet Explorer.
echo Great! You seem to understand ;)

:end
echo Hmm... You have Internet Explorer.
echo That is bad :)
HELP

当使用不同的操作系统版本时,了解本机可用的命令是很重要的。在命令提示符处输入HELP可以显示可用的命令,以及它们的功能的简要描述。

cmd.exe /? 

这将列出用于启动命令提示符的所有命令行参数,以及更改整个系统行为的注册表调整。

能够运行命令并处理输出(如bash中的'$()'的反引号)。

for /f %i in ('dir /on /b *.jpg') do echo --^> %i

如果文件名中有空格,可以这样写:

for /f "tokens=*" %i in ('dir /on /b *.jpg') do echo --^> %i

cmd.exe本身的/c参数,告诉它运行然后执行这些命令。

我曾经发现自己经常这样做:

win+r, cmd RETURN, ping google.com RETURN

但现在我只知道

win+r, cmd /c ping google.com返回

快得多。如果您正在使用pstools,并且希望使用psexec在远程机器上执行一些命令行功能,那么这也很有帮助。

EDIT: /k工作方式相同,但保持提示打开。这可能经常会派上用场。

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

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