Я заметил очень странное поведение при попытке записать текст в файл без новой строки. Везде есть код, который выглядит так:

echo|set /p=foo > foo.txt

Это прекрасно работает, но моя система сборки не работает, потому что, когда я оцениваю% ERRORLEVEL%, я получаю 1 после вызова:

echo %ERRORLEVEL%
echo |set /p=foo>foo.txt
echo %ERRORLEVEL%

возвращается

D:\>echo 0
0

D:\>echo   | set /p=foo  1>foo.txt

D:\>echo 1
1

Это известное поведение? set становится придирчивым , потому что нет ни одной переменной , чтобы установить?

Примечание. Повторяемый код echo |set /p=foo>foo.txt фактически является echo | set /p=foo 1>foo.txt

1 ответ1

0

Спасибо @Regejok за подсказку. Хотя поиск set не самая простая задача:D

Однако со ссылкой на этот источник: https://ss64.com/nt/set.html кажется, что это действительно приводит к тому, что уровень ошибки устанавливается равным 1:

Errorlevels

    When CMD Command Extensions are enabled (the default)

    If the variable was successfully changed %ERRORLEVEL% = 0
    No variable found/invalid name = 1
    SET /A Unbalanced parentheses = 1073750988
    SET /A Missing operand = 1073750989
    SET /A Syntax error = 1073750990
    SET /A Invalid number = 1073750991
    SET /A Number larger than 32-bits = 1073750992
    SET /A Division by zero = 1073750993

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .