Подтвердить что ты не робот

Перенаправление файлов в Windows и% errorlevel%

Предположим, мы хотим создать пустой файл в Windows со следующей командой:

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

каталог не существует, поэтому мы получаем ошибку:

The system cannot find the path specified

Если вы распечатаете %errorlevel%, выход будет следующим:

echo %errorlevel%
0

Однако команда не была успешной!

Я заметил, что окна не устанавливают %errorlevel% последней команды, если вы используете перенаправление.

Есть ли способ обойти это?

4b9b3361

Ответ 1

Вы можете использовать следующее:

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

Я всегда принимал && и || операторы использовали ERRORLEVEL, но, по-видимому, нет.

Очень любопытно, что ERRORLEVEL устанавливается после ошибки перенаправления, только если вы используете || оператор. я бы никогда не догадался. Я бы даже не удосужился испытать, если бы не отличный вопрос.

Если все, что вы хотите сделать, это установить ERRORLEVEL при сбое перенаправления, тогда, конечно, вы можете просто сделать:

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