Подтвердить что ты не робот

Как конкатенировать строки в пакетном файле Windows?

У меня есть каталог, для которого я хочу перечислить все файлы .doc с помощью ;.

Я знаю следующую командную команду: echos все файлы:

for /r %%i In (*.doc) DO echo %%i

Но теперь я хочу поместить их все в переменную, добавьте ; между ними и повторю их все сразу.
Как я могу это сделать?

set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
4b9b3361

Ответ 1

Как насчет:

@echo off
set myvar="the list: "
for /r %%i in (*.doc) DO call :concat %%i
echo %myvar%
goto :eof

:concat
set myvar=%myvar% %1;
goto :eof

Ответ 2

На основе решения Rubens вам нужно включить Delayed Expansion of env variables (введите "help setlocal" или "help cmd" ), чтобы var был правильно оценен в цикле:

@echo off
setlocal enabledelayedexpansion
set myvar=the list: 
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%

Также рассмотрим следующее ограничение (MSDN):

Максимальная индивидуальная среда переменный размер составляет 8192 байта.

Ответ 3

Обратите внимание, что переменные @fname или @ext можно просто конкатенировать. Это:

forfiles /S /M *.pdf /C "CMD /C REN @path @[email protected]"

переименовывает все файлы PDF в файл "filename_old.pdf"