72 votes

Comment concaténer des chaînes de caractères dans un fichier batch Windows ?

Je dispose d'un répertoire pour lequel je veux lister tous les .doc avec un ; .

Je sais que la commande batch suivante échoue tous les fichiers :

for /r %%i In (*.doc) DO echo %%i

Mais maintenant, je veux les mettre tous dans une variable, ajouter une ; entre les deux et les répercuter en une seule fois.
Comment puis-je faire ça ?

set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%

60voto

Rubens Farias Points 33357

Qu'en est-il :

@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

45voto

devio Points 22981

En vous basant sur la solution de Rubens, vous devez activer l'expansion retardée des variables env (tapez "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%

Considérons également la restriction suivante ( MSDN ) :

L'environnement individuel maximal est de 8192 octets.

0voto

Pierre Points 559

Notez que les variables @fname o @ext peuvent être simplement concaténés. Ceci :

forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"

renomme tous les fichiers PDF en "nom de fichier_ancien.pdf".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X