Я изучаю пакетные сценарии Windows. Мне нужно вызывать ошибки при сбое операций копирования, перемещения или удаления. Я сделал пример сценария, и по какой-то причине, когда операция завершается неудачей, я не могу поднять уровень ERRORLEVEL. Запускаю скрипт а файлы либо не существуют либо открываются в другой программе и в консоль выводятся stderr сообщения, но ERRORLEVEL никогда не поднимается, почему так? Кроме того, есть ли способ передать stderr в переменную, которую я мог бы проверить, если я не могу поднять ERRORLEVEL?
Мой код выглядит следующим образом:
`@Echo Off
ECHO.
Set /P myVar=Please enter a value:
Echo var = %myVar%
ECHO Trying to delete the file dummy.csv >> log.txt
Set myVar2 = nothing
DEL C:\dummy420.csv
IF NOT ERRORLEVEL 0 ECHO There was an error
ECHO %ERRORLEVEL%
REM 2>myVar2
REM Echo 2>
REM Echo %myVar2%
Echo 2>&1
REM && (echo yourCommand was successful) || (echo yourCommand failed)
IF NOT ERRORLEVEL 0 ECHO There was an error
ECHO %ERRORLEVEL%
Move ""C:\dummy420.csv" D:\"
IF NOT ERRORLEVEL 0 ECHO There was an error
Set /P dummy=Press Enter to End`
Это мой вывод:
Please enter a value:hello
var = hello
C:\dummy420.csv
The process cannot access the file because it is being used by another process.
0
ECHO is off.
0
The filename, directory name, or volume label syntax is incorrect.
Press Enter to End