1

Я хотел бы сделать что-то вроде этого:

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

чтобы получить это:

dupa
jasiu
karuzela 

вместо этого:

dupa\njasiu\nkaruzela\n

Как мне вставить разрывы строк или специальные символы в строку?

Warining

Решение set b=%a:;=^&echo.% Не ставит разрывы строк в вашей строке, а фактическое &echo. команды.

1 ответ1

2

Совет txtechhelp близок:

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

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


==>

Однако вам нужно экранировать символ & ampersand в команде set используя либо общий экранирующий символ (^ caret):

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

==> echo %b%
dupa
jasiu
karuzela

или используя двойные кавычки:

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

==> echo %c%
dupa
jasiu
karuzela

Вы можете перебрать переменную %a% в цикле for.
Это просто, если %a% не содержит других разделителей, таких как пробел, табуляция, запятая или знак равенства:

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

==>

В противном случае, если %a% содержит некоторые другие разделители, такие как пробел, символ табуляции, запятая или знак равенства:

==> 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

==>

Обратите внимание на параметр цикла %f (приведенные выше примеры скопированы и вставлены из открытого командного окна cmd ).

В пакетном файле обозначьте его правильно, используя удвоенный знак процента как %%f:

for %%f in (%a%) do echo %%f

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .