首页 > 解决方案 > 此时收到消息 0 是意外的批处理脚本

问题描述

我有以下批处理脚本,但我不断收到错误“此时 0 是意外的”。

IF "%Logs%"=="true" (
    for /f %%i in ('dir \%Device%\logs') do set cmd=%%i
        if %cmd% GTR 0 (
            echo Folder does exist.
        )
)

我想我必须通过延迟扩展来修复它,但我不知道如何,我将不胜感激,在此先感谢!

标签: windowsbatch-filecmd

解决方案


您必须启用延迟扩展,setlocal enabledelayedexpansion然后 其与!var!而不是%var%

@echo off
setlocal enabledelayedexpansion
IF "%Logs%"=="true" (
    for /f %%i in ('dir /ad /b "\%Device%\logs" ^|find /c /v ""') do set cmd=%%i
    if !cmd! GTR 0 (
       echo Folder does exist.
    )
)

注意:对于一个空文件夹,您将获得一个值2(因为.and ..)。适应... GTR 2或使用另一种方法(如上)。


推荐阅读