Inserir quebra de linha / caractere especial em string na linha de comando

1

Eu gostaria de fazer algo assim:

set a=dupa;jasiu;karuzela;
set a=%a:;=\n%
echo %a%

para obter isso:

dupa
jasiu
karuzela 

em vez disso:

dupa\njasiu\nkaruzela\n

Como incorporar quebras de linha ou caracteres especiais em string?

Warining

A solução set b=%a:;=^&echo.% não coloca quebras de linha na sua string, mas sim comandos &echo. reais.

    
por Paweł Audionysos 28.02.2017 / 04:53

1 resposta

2

O conselho da txtechhelp está perto:

==> set a=dupa;jasiu;karuzela;

==> echo %a:;=&echo.%
dupa
jasiu
karuzela


==>

No entanto, você precisa excluir o caractere & "e comercial" em um comando set usando o caractere de escape geral ( ^ caret):

==> set b=%a:;=^&echo.%

==> echo %b%
dupa
jasiu
karuzela

ou usando aspas duplas:

==> set "c=%a:;=&echo.%"

==> echo %c%
dupa
jasiu
karuzela

Você pode passar o loop pela variável %a% em um for loop .
É simples se %a% não contém outros delimitadores como espaço , guia , vírgula ou é igual a um sinal :

==> for %f in (%a%) do @echo %f
dupa
jasiu
karuzela

==>

Caso contrário, se %a% contiver algum outro (s) delimitador (es) como espaço , guia , < em> vírgula ou é igual a um sinal :

==> set a=dupa;jasiu;karu zela;

==> for %f in (%a%) do @echo %f
dupa
jasiu
karu
zela

==> for %f in ("%a:;=";"%") do @if not "%~f"=="" echo.%~f
dupa
jasiu
karu zela

==>

Por favor, note o parâmetro %f loop (exemplos acima copiados & colados de uma janela de comando cmd aberta).

Em um arquivo em lote , denomine-o corretamente usando sinal de porcentagem duplicada como %%f :

for %%f in (%a%) do echo %%f
    
por 01.03.2017 / 09:22