Вопрос по windows – Перенаправление файлов в Windows и% errorlevel%

21

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

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

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

<code>The system cannot find the path specified
</code>

Если вы распечатаете%errorlevel% выход:

<code>echo %errorlevel%
0
</code>

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

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

Это можно обойти?

Ваш Ответ

1   ответ
29

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

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

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

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

type nul > C:\does\not\exist\file.txt || rem
Error: User Rate Limit Exceeded||Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded1Error: User Rate Limit Exceeded||Error: User Rate Limit Exceeded0Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded&& REMError: User Rate Limit Exceeded
Error: User Rate Limit Exceededtype nul > C:\does\not\exist\file.txt || remError: User Rate Limit ExceededERRORLEVELError: User Rate Limit Exceeded

Похожие вопросы