asdfasdf

(El nivel de error entre paréntesis es siempre 0)

Por supuesto. Porque:

if EXIST c:\1.txt (

dsfadsf

echo %errorlevel%

)

Este es un comando.

Si no hay un retraso en la variable de inicio, lo que %errorlevel% determina es el comando if anterior: dir > c:\1.txt

El valor de retorno, porque la ejecución debe ser exitoso, por supuesto. El nivel de error es siempre 0.

Para solucionar este problema.

El retraso de la variable de inicio se puede solucionar.

El código es el siguiente:

@echo off

setlocal enableelayedexpansion

dir > c:\1.txt

si EXISTE c:\1.txt (

dsfadsf

echo !errorlevel!

)

asdfasdf

echo %errorlevel%

pausa