É possível colocar um caractere de nova linha em uma linha de eco em um arquivo de lote? [duplicado]

StackOverflow https://stackoverflow.com/questions/1721258

  •  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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top