![批处理文件中的文件计数器无法正常工作](https://linux22.com/image/1500742/%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E8%AE%A1%E6%95%B0%E5%99%A8%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
我想在批处理文件中创建一个循环,每次执行时都计算文件夹中文件的数量。问题是第一次执行时的计数器总是未知的,导致脚本无法使用。
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