J'ai un répertoire pour lequel je veux lister tous les fichiers .doc
avec un ;
.
Je sais que la commande de lot suivante renvoie tous les fichiers:
for /r %%i In (*.doc) DO echo %%i
Mais maintenant, je veux les mettre tous dans une variable, ajouter un ;
entre les deux et les afficher tous en même temps.
Comment puis je faire ça?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
Qu'en est-il de:
@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
Sur la base de la solution de Rubens, vous devez activer l’extension retardée des variables env (type "help setlocal" ou "help cmd") afin que la variable soit correctement évaluée dans la boucle:
@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%
Prenez également en compte la restriction suivante ( MSDN ):
L'environnement individuel maximum taille variable est 8192bytes.
Notez que les variables @fname
ou @ext
peuvent être simplement concaténées. Ce:
forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"
renomme tous les fichiers PDF en "filename_old.pdf"