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

0

Eu notei um comportamento muito estranho ao tentar escrever texto em um arquivo sem ter a nova linha à direita. Existe código em todos os lugares que se parece com isso:

echo|set /p=foo > foo.txt

Funciona muito bem, mas meu sistema de compilação falha porque, quando avalio% ERRORLEVEL%, recebo um 1 após a chamada:

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

retorna

D:\>echo 0
0

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

D:\>echo 1
1

Este é um comportamento conhecido? O set está ficando seletivo porque não há variável a ser definida?

Observação: o código ecoado de echo |set /p=foo>foo.txt é, na verdade, echo | set /p=foo 1>foo.txt

    
por Samuel 29.06.2017 / 15:52

1 resposta

0

Obrigado @Regejok pela dica. Procurar por set não é a tarefa mais fácil: D

No entanto, citando essa fonte: link , parece que isso realmente faz com que o nível de erro seja definido como 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
    
por 30.06.2017 / 08:44