我正在对大量文件进行一些处理,我想限制我对前面找到的9个文件做的事情。我在批处理文件中尝试了这个,它不起作用。它处理所有文件,并不会在第9个文件停止。我做错了什么?
setlocal
set fileCount=0
for %%I in (*.doc) do (
rem do stuff here ...
set /a fileCount+=1
if "%fileCount%"=="9" exit
)
答案 0 :(得分:1)
问题是%fileCount%
在解析时而不是在执行时间期间被扩展,因此它在执行过程中没有考虑fileCount
的更改。所以你的for
- 循环等同于:
for %%I in (*.doc) do (
rem do stuff here ...
set /a fileCount+=1
if "0"=="9" exit
)
要更正它,您需要启用并使用延迟扩展。您可以使用setlocal EnableDelayedExpansion
而不仅仅是setlocal
和!fileCount!
而不是%fileCount%
来实现这一点。所以:
setlocal EnableDelayedExpansion
set fileCount=0
for %%I in (*.doc) do (
rem do stuff here ...
set /a fileCount+=1
if "!fileCount!"=="9" exit
)
有关详细信息,请参阅http://ss64.com/nt/delayedexpansion.html。