É possível colocar um caractere de nova linha em uma linha de eco em um arquivo de lote? [duplicado]
-
19-09-2019 - |
Pergunta
Esta questão já tem uma resposta aqui:
É possível colocar um caractere de nova linha em uma linha de eco em um arquivo de lote?
Basicamente eu quero ser capaz de fazer o equivalente a:
echo Hello\nWorld
Você pode fazer isso com bastante facilidade em Linux, mas eu não posso trabalhar para fora como fazê-lo no Windows.
Solução
echo.
imprime uma linha vazia.
Exemplo:
echo Hello
echo.
echo world
impressões
Hello
world
Outras dicas
Ele pode ser resolvido com um único eco.
Você precisa de um \n
caractere de nova linha para isso.
Existem várias maneiras de obter uma nova linha para o echo
1) Este uso amostra o acento circunflexo de várias linhas para adicionar uma nova linha para o comando,
a linha vazia é necessária
echo Hello^
world
2) A solução seguinte cria primeiro uma variável que contém um único caractere de avanço de linha.
set \n=^
rem ** Two empty lines are required
Ou criar a nova linha com uma versão ligeiramente modificada
(set \n=^
%=DONT REMOVE THIS=%
)
E usar esse personagem com expansão adiada
setlocal EnableDelayedExpansion
echo Hello!\n!world
Para usar um caractere de avanço de linha com o expansão por cento que você precisa para criar uma seqüência mais complexa
echo Hello^%\n%%\n%world
Ou você pode usar o Nova linha corte
REM Creating a Newline variable (the two blank lines are required!)
set \n=^
set NL=^^^%\n%%\n%^%\n%%\n%
REM Example Usage:
echo There should be a newline%NL%inserted here.
Mas só a expansão atrasada da nova linha funciona confiável, também no interior de citações.
Depois de um pouco de experimentação, descobri que é possível fazê-lo sem a emissão de dois comandos de eco separados conforme descrito em Como você pode ecoar uma nova linha em arquivos em lote? . No entanto, para fazê-lo funcionar, precisa de um editor de texto que não se traduz CR para CR + LF.
Tipo:
@echo First Line
depois com NumLock, mantenha pressionada a tecla ALT e digite 10 no teclado numérico antes de liberar ALT (você deve use o teclado numérico, não as teclas numéricas top-linha). Isto irá inserir um carácter CR. Em seguida, introduzir a segunda linha. Dependendo do seu editor e como ele lida com CR comparação com CR + LF você pode obter:
@echo First Line◙Second Line
ou
@echo First Line
Second Line
Isso funciona na linha de comando e vai trabalhar em um arquivo de lote, desde que o editor de texto não se traduz CR para CR + LF (que editores Windows / DOS fazer a menos que você configurá-los para não). Se o CR é convertido para CR + LF, ou se você usar apenas LF, a segunda linha é interpretado como um novo comando.
No entanto, eu não posso ver porque isso seria preferível a simplesmente:
@echo First Line
@echo Second Line
Ahaha,
Eu acho que funcionou algo perto o suficiente ...
echo hello&echo.&echo world
Produz:
Olá
mundo
echo. ou echo (
irá fazer a nova linha em branco. Espero que este seja útil.
Eu achei muito informativo, por isso queria postar um exemplo melhor usando as respostas dadas
Isso fornece uma mensagem de uso bem formatado
if "%1" == """" goto usage
:usage
echo USAGE: %0 [Set properties using -D flag] [Ant Task to Run] &
echo. &
echo Availble Command line properties &
echo -------------------------------- &
...
Eu acho que não é possível. Você só poderia tentar uma ascii caracteres para isso: http://www.asciitable.com/ Mas isso talvez travar o seu lote de arquivos.