我最近包括在.cmd文件类似这样的一行:
for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f"
我原本只是用来%F,并在命令行上运行,而不是在通过文件来看,它做工精细。 当我切换到%% f时,曾在文件中。 只是想知道有什么区别。
我最近包括在.cmd文件类似这样的一行:
for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f"
我原本只是用来%F,并在命令行上运行,而不是在通过文件来看,它做工精细。 当我切换到%% f时,曾在文件中。 只是想知道有什么区别。
(更详细的说明中可以找到存档的Microsoft知识库文章 。)
三个事项:
%1
, %2
,... 在它们之间被解释为一个变量的任何字符两个百分比符号:
echo %myvar%
%%f
为什么?
例如,如果我们执行你的(简化)命令行
FOR /f %f in ('dir /b .') DO somecommand %f
在批处理文件中, 第2条将试图解释
%f in ('dir /b .') DO somecommand %
作为一个变量。 为了防止这种情况,你必须申请规则3,逃离%
与第二%
:
FOR /f %%f in ('dir /b .') DO somecommand %%f
在DOS你不能在命令行中使用环境变量,只有在批处理文件中,他们使用了%
符号作为分隔符。 如果你想要一个文字%
在批处理文件标志,例如在echo
发言,你需要加倍。
这结转到Windows NT这使得在命令行环境变量,但为了向下兼容,你仍然需要你加倍%
的.cmd文件的迹象。