Ray*_*ond 1 windows cmd batch-file errorlevel
%errorlevel% 在 WindowsXP 中不起作用。
据我所知,当发生错误时,%errorlevel% 设置为 1 或更高的值,如果没有错误,它将设置为 0。
但是,即使没有错误,%errorlevel% 也是 1。我设置 %errorlevel% 0,即使有错误 %errorlevel% 也是 0。
我认为操作系统不会改变 XP 中的 %errorlevel%。
在 Win7 中它完全可以工作。
@echo off
setlocal enabledelayedexpansion
call dir
echo errorlevel=%errorlevel%
REM expected errorlevel=0 but 1
call dor
echo errorlevel=%errorlevel%
REM expected errorlevel=1
set errorlevel=0
call dor
echo errorlevel=%errorlevel%
REM expected errorlevel=1 but 0
Run Code Online (Sandbox Code Playgroud)
但是如果 errorlevel 1() 看起来有效。
一些例子:
@ECHO OFF &SETLOCAL
echo errorlevel=%errorlevel%
call dir >nul
echo errorlevel=%errorlevel%
Run Code Online (Sandbox Code Playgroud)
输出:
errorlevel=0
errorlevel=0
Run Code Online (Sandbox Code Playgroud)
@ECHO OFF &SETLOCAL
echo errorlevel=%errorlevel%
call dor
echo errorlevel=%errorlevel%
Run Code Online (Sandbox Code Playgroud)
输出:
errorlevel=0
'dor' is not recognized as an internal or external command,
operable program or batch file.
errorlevel=1
Run Code Online (Sandbox Code Playgroud)
@ECHO OFF &SETLOCAL
::set errorlevel=0 illegal operation!
set test=1
set test
echo errorlevel=%errorlevel%
call dor
echo errorlevel=%errorlevel%
Run Code Online (Sandbox Code Playgroud)
输出:
test=1
errorlevel=0
'dor' is not recognized as an internal or external command,
operable program or batch file.
errorlevel=1
Run Code Online (Sandbox Code Playgroud)
set errorlevel不是合法的命令。如果您需要设置 errorlevel 系统环境变量,请使用常规命令执行此操作。
@ECHO OFF &SETLOCAL
::set errorlevel=1 illegal operation!
set test
echo errorlevel=%errorlevel%
call dir >nul
echo errorlevel=%errorlevel%
Run Code Online (Sandbox Code Playgroud)
输出:
Environment variable test not defined
errorlevel=1
errorlevel=0
Run Code Online (Sandbox Code Playgroud)