返回
批处理脚本变量循环设置指南:解决“*100 is unexpected at this time”错误
windows
2024-03-21 16:21:45
*批处理脚本中的变量循环设置:解决“100 is unexpected at this time”错误
问题
在批处理脚本中使用循环设置变量时,可能会遇到“*100 is unexpected at this time”错误。这是由于在使用 set /A
命令设置整数变量之前,未正确声明变量所致。
解决方案
为了解决此错误,需要先声明变量为整数变量,然后再使用 set /A
命令进行赋值。
原始代码:
set /A pprog=(100-%sum%)*100 / (%count%+%count0%)
修改后的代码:
set /A tmp=(100-%sum%)*100
set /A pprog=tmp / (%count%+%count0%)
在修改后的代码中,我们首先使用 set /A
将计算结果分配给临时变量 tmp
,然后再将 tmp
的值赋值给变量 pprog
。
代码示例
下面是一个代码示例,展示了如何解决此错误:
@echo on & setlocal
set count=0
set pattern=*.mp4
set pattern0=*.webm
for /f %%i in ('dir /b /a-d %pattern% ^| find /c /v ""') do @call set count=%%i
for /f %%i in ('dir /b /a-d %pattern0% ^| find /c /v ""') do @call set count0=%%i
set sum=%count% + %count0%
set total=%sum%
FOR /r %%i in (*.mp4,*.webm) DO (
set /A tmp=(100-%sum%)*100
set /A pprog=tmp / (%count%+%count0%)
set /A sum=%sum% - 1
echo %pprog% done %sum% files left out of %total%
)
pause
常见问题解答
1. 为什么需要声明整数变量?
在批处理脚本中,set /A
命令用于对整数变量进行算术运算。如果变量未声明为整数变量,则 set /A
将无法正确执行计算。
2. 如何声明整数变量?
可以使用以下语法声明整数变量:
set /A variable_name=value
3. 除了 set /A
命令之外,还有其他用于设置整数变量的方法吗?
除了 set /A
命令之外,还可以使用以下方法设置整数变量:
set variable_name=value
:将字符串值分配给变量。for /f "tokens=1" %%i in (value) do set variable_name=%%i
:从字符串中提取第一个令牌并将其分配给变量。
4. 什么是临时变量?
临时变量是在特定范围内使用的变量。在我们的示例中,tmp
是一个临时变量,用于存储中间计算结果。
5. 如何使用 FOR /R
命令?
FOR /R
命令用于在指定目录中递归处理文件或文件夹。在我们的示例中,我们使用 FOR /R
循环遍历当前目录和所有子目录中的所有 MP4 和 WEBM 文件。