У меня есть каталог, для которого я хочу перечислить все файлы .doc
с помощью ;
.
Я знаю следующую командную команду: echos все файлы:
for /r %%i In (*.doc) DO echo %%i
Но теперь я хочу поместить их все в переменную, добавьте ;
между ними и повторю их все сразу.
Как я могу это сделать?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
Ответ 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 @fname_old.@ext"
переименовывает все файлы PDF в файл "filename_old.pdf"