Batch: Como fazer o eco de um conjunto / p com caracteres especiais em um arquivo?

2

Estou trabalhando em um script no qual tenho o seguinte código:

:top  
Echo Enter Message
set /p msg=">"
if "%msg%"=="C" goto cancel
echo %msg% >> File.txt
goto top
:cancel

Estou procurando uma maneira de o / p aceitar /% p_de% e todas essas coisas e ainda fazer o eco no arquivo. Isso é possível? Atualmente, o script apenas crahses

    
por Mark Deven 27.06.2018 / 20:07

1 resposta

1

Método 1: Expansão atrasada

Uma maneira de fazer o que você quer é usar a Expansão com Atraso , que deixa os caracteres especiais sozinhos.

Delayed Expansion will cause variables within a batch file to be expanded at execution time rather than at parse time, this option is turned on with the SETLOCAL EnableDelayedExpansion command.

:top  
Echo Enter Message
set /p msg=">"
if "%msg%"=="C" goto cancel
setlocal EnableDelayedExpansion
echo !msg! >> File.txt
endlocal
goto top
:cancel

Como você pode ver, você precisará usar !msg! em vez de %msg% .

Método 2: Citações

Colocar aspas ao redor da variável também deixa os caracteres especiais sozinhos, com o efeito colateral de fazer com que essas citações passem para sua saída também.

:top  
Echo Enter Message
set /p msg=">"
if "%msg%"=="C" goto cancel
echo "%msg%" >> File.txt
goto top
:cancel
    
por 27.06.2018 / 20:45