我想在批处理文件中创建一个循环,每次执行时都计算文件夹中文件的数量。问题是第一次执行时的计数器总是未知的,导致脚本无法使用。
loop:
@set /a counter=%counter%+1
@if %counter% GTR 2 (
@set file_counter=0
for %%x in ("%Stckalz_Input%\%Directory_Stckalz_Job%\Results\*") do (set /a file_counter+=1)
@echo Server is busy or not responding. %file_counter%
)
goto loop
概念是等待一些循环直到程序结束。当结果文件夹为空时,用户会遇到错误。问题是第一次执行时变量file_counter
总是未声明。有人能帮助我吗?
答案1
问题在于 if 语句块 - 它在一个块中被评估。通过两个更改解决:
- 添加 setlocal delayedexpansion
- 在块内使用 !variable! 而不是 %variable% 来“动态”评估它们。
您的代码看起来应如下所示:
setlocal enabledelayedexpansion
:loop
@set /a counter=%counter%+1
@if %counter% GTR 2 (
@set /a file_counter=0
for %%x in ("%Stckalz_Input%\%Directory_Stckalz_Job%\Results\*") do (set /a file_counter+=1)
@echo Server is busy or not responding. !file_counter!
)
goto :loop