Come per concatenare le stringhe in un file batch di Windows?
-
19-09-2019 - |
Domanda
Ho una directory per cui voglio elencare tutti i file .doc
con un ;
.
So che il comando seguente echi in batch tutti i file:
for /r %%i In (*.doc) DO echo %%i
Ma ora voglio metterli tutti in una variabile, aggiungere un ;
in mezzo e eco tutti in una volta.
Come posso fare?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
Soluzione
Che dire:
@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
Altri suggerimenti
Sulla base di soluzione di Rubens', è necessario attivare espansione ritardata delle variabili env (tipo 'help setlocal' o 'help cmd') in modo che il var è correttamente valutata nel circuito:
@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%
Anche considerare il seguente limitazione ( MSDN ):
L'ambiente massima individuale dimensioni variabili è 8192 byte.
Si noti che le variabili @fname
o @ext
possono essere semplicemente concatenate. Questo:
forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"
rinomina tutti i file PDF in "filename_old.pdf"