我在下面编写的批处理脚本有问题。如果我删除“ if”语句,它可以工作,但不能打印出%size%,如果我留下“ if”语句,它会给我一个关于“ 0此时是意外”的错误。
我在这里确实看不到任何语法错误,如果我继续打开echo,我会看到变量设置了正确的值。最终,如果它检测到文件处于不良状态,我希望它可以还原文件,但是对于为什么变量似乎无法正常工作,我有些困惑。
@echo off
set folder="C:/Somedir/"
set backupfolder="C:/Backupdir/"
set minbytesize=0
for /R "%folder%" %%I in (*) do (
set size=%%~zI
set file=%%~nxI
echo %file% is %size%
if %size% EQU %minbytesize% (
REM do something
)
)
pause
答案 0 :(得分:1)
旧的延迟扩展陷阱:
@echo off
setlocal enableDelayedExpansion
set "folder=C:/Somedir/"
set "backupfolder=C:/Backupdir/"
set "minbytesize=0"
for /R "%folder%" %%I in (*) do (
set "size=%%~zI"
set "file=%%~nxI"
echo !file! is !size!
if !size! EQU !minbytesize! (
REM do something
)
)
pause
endlocal
更多信息,请点击此处:ss64.com/nt/delayedexpansion.html