批处理文件变量不打印

时间:2018-08-02 20:54:14

标签: windows batch-file

我在下面编写的批处理脚本有问题。如果我删除“ 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

1 个答案:

答案 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