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%
È stato utile?

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"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top