代码之家  ›  专栏  ›  技术社区  ›  FMFF

批处理文件-ren命令的errorlevel即使失败也返回0

  •  0
  • FMFF  · 技术社区  · 16 年前

    这与我先前的问题有关。

    ren "C:\Temp\%%A" "%%A"
    if errorlevel 0 (
              "C:\Program Files\7-Zip\cmdline\7za.exe" a -tzip -mx9 "C:\temp\Zip\%%A.zip" "C:\temp\%%A"
               Move "C:\temp\%%A" "C:\Temp\Archive"
                    )
    

    在上面,即使ren命令失败,if的值始终为true。

    其想法是检查一个文件是否被其他应用程序锁定,如果没有,那么将其存档并移动到其他地方。

    如何最好地做到这一点?

    谢谢您。

    3 回复  |  直到 14 年前
        1
  •  5
  •   Frank Bollack    16 年前

    类型 help if 在命令行上获取一些关于错误级别处理的信息。

    代码的问题是,表达式 IF ERRORLEVEL N 对于任何等于或大于 N

    通常只有错误级别0表示成功,任何其他(更大)值都是某些错误的标志。要简单地检查,如果没有发生错误,请将您的检查反转为:

    IF NOT ERRORLEVEL 1 (
       REM your code here
    )
    

    或者,退出脚本:

    IF ERRORLEVEL 1 EXIT /B
    
        2
  •  -1
  •   thomas    15 年前

    您还可以创建一个rem.bat,如果error level==300,它将使错误级别调用类似的内容;或者,您也可以使用0的级别来解锁每个错误级别。你可以在一些事情上改变,不仅会使应用运行得更平滑,而且不会造成风扇速度的滞后,因为错误级别会使用更多的CPU。

        3
  •  -1
  •   Community Mohan Dere    8 年前

    REN是一个内部命令,不设置错误级别(我正在寻找相同的答案 here )

    推荐文章