I have a directory for which I want to list all the .doc
files with a ;
.
I know the following batch command echos all the files:
for /r %%i In (*.doc) DO echo %%i
But now I want to put them all in a variable, add a ;
in between and echo them all at once.
How can I do that?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
What about:
@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
Based on Rubens' solution, you need to enable Delayed Expansion of env variables (type "help setlocal" or "help cmd") so that the var is correctly evaluated in the loop:
@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%
Also consider the following restriction (MSDN):
The maximum individual environment
variable size is 8192bytes.
Note that the variables @fname
or @ext
can be simply concatenated. This:
forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"
renames all PDF files to "filename_old.pdf"