Redirección de archivos en Windows y% errorlevel%

Digamos que queremos crear un archivo vacío en Windows con el siguiente comando:

type nul > C:\does\not\exist\file.txt 

el directorio no existe, entonces obtenemos el error:

 The system cannot find the path specified 

Si imprime el %errorlevel% la salida es:

 echo %errorlevel% 0 

¡Sin embargo, el comando no tuvo éxito!

Me di cuenta de que Windows no establece el %errorlevel% del último comando si usa la redirección.

¿Hay alguna forma de evitar esto?

Puedes usar lo siguiente:

 C:\>type nul > C:\does\not\exist\file.txt && echo ok || echo fail The system cannot find the path specified. fail C:\>echo %errorlevel% 1 

Siempre asumí el && y || los operadores usaban ERRORLEVEL, pero aparentemente no.

Es muy curioso que ERRORLEVEL se establezca después del error de redirección solo si usa || operador. Nunca lo hubiera adivinado. Tampoco me hubiera molestado en probar si no fuera por su excelente pregunta.

Si todo lo que quiere hacer es configurar el ERRORLEVEL después de la falla de redirección, entonces, por supuesto, puede hacer lo siguiente:

 type nul > C:\does\not\exist\file.txt || rem