it-swarm.com.ru

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

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

Я знаю, что следующая пакетная команда выводит все файлы на экран:

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

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

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

Как насчет:

@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
58
Rubens Farias

Основываясь на решении Рубенса, вам нужно включить отложенное расширение переменных env (введите «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 байта.

44
devio

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

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

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

0
Pierre