How to concatenate strings in a Windows batch file?
-
19-09-2019 - |
Question
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%
Solution
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
OTHER TIPS
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"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow