batch-file - run - how to use batch file
ERRORLEVEL dentro de IF (1)
Intente usar setlocal enabledelayedexpansion
al comienzo de su archivo por lotes, y !ERRORLEVEL!
dentro de tu IF
. Esto parece funcionar para mí:
@echo off
setlocal enabledelayedexpansion
dir nul
echo %ERRORLEVEL%
if .1.==.1. (
urklbkrlksdj - not a command
echo %ERRORLEVEL%
echo !ERRORLEVEL!
)
Acabo de tropezar con algo raro con %ERRORLEVEL%
y quería ver si alguien sabe por qué y si hay alguna forma de solucionarlo. Básicamente, parece como si los comandos ejecutados dentro de sentencias if no configuraran la variable %ERRORLEVEL%
. El ERRORLEVEL
(como en IF ERRORLEVEL 1
, que es diferente de IF %ERRORLEVEL% EQU 1
) check parece que todavía funciona bien, así que probablemente pueda evitarlo, pero aún así sería bueno poder imprimir el nivel de error . Para la depuración o lo que sea.
@echo off
Set TESTVAR=1
tasklist | find /I "IsntRunning.exe" > NUL
echo OUTSIDE_IF %ERRORLEVEL%
ThisWillSetErrorLevelTo9009ieNotRecognizedCommand
tasklist | find /I "IsntRunning.exe" > NUL
echo OUTSIDE_IF %ERRORLEVEL%
ThisWillSetErrorLevelTo9009ieNotRecognizedCommand
IF %TESTVAR% EQU 1 (
Set ERRORLEVEL=
tasklist | find /I "IsntRunning.exe" > NUL
echo INSIDE_IF ERRORLEVEL %ERRORLEVEL%
IF ERRORLEVEL 1 (
echo INSIDE_IF2 ERRORLEVEL GREQ 1 %ERRORLEVEL%
)
IF ERRORLEVEL 2 (
echo INSIDE_IF2 ERRORLEVEL GREQ 2 %ERRORLEVEL%
)
IF ERRORLEVEL 3 (
echo INSIDE_IF2 ERRORLEVEL GREQ 3 %ERRORLEVEL%
)
)
tasklist | find /I "IsntRunning.exe" > NUL
echo OUTSIDE_IF ERRORLEVEL %ERRORLEVEL%
@echo on
Poner eso en un archivo por lotes y ejecutarlo produce este resultado:
C: / Users / username / Documents / work> test.bat
OUTSIDE_IF 1
''ThisWillSetErrorLevelTo9009ieNotRecognizedCommand'' no se reconoce como un comando interno o externo, programa operable o archivo por lotes.
OUTSIDE_IF 1
''ThisWillSetErrorLevelTo9009ieNotRecognizedCommand'' no se reconoce como un comando interno o externo, programa operable o archivo por lotes.
INSIDE_IF ERRORLEVEL 9009
INSIDE_IF2 ERRORLEVEL GREQ 1 9009
OUTSIDE_IF ERRORLEVEL 1
Artículos relevantes: