133 votes

Fichier de commandes Windows: appelez plus d'une commande POUR chaque boucle

Est-il possible dans un fichier de commandes d'appeler plusieurs commandes dans une seule boucle FOR, par exemple, je veux imprimer le nom du fichier et le supprimer après.

 @ECHO OFF
FOR /r %%X IN (*.txt) DO (ECHO %%X DEL %%X)
REM the line above is invalid sintax.
 

Je sais que dans ce cas, je pourrais le résoudre en faisant deux boucles FOR distinctes: une pour afficher le nom et une pour supprimer le fichier, mais est-il possible de le faire en une seule boucle ???

Merci!

211voto

Anders Points 34448

À l'aide de & est très bien pour de courtes commandes, mais que seule ligne peut être très long, très rapide. Lorsque cela se produit, passez en multi-syntaxe de la ligne.

FOR /r %%X IN (*.txt) DO (
    ECHO %%X
    DEL %%X
)

Le Placement des questions, exécutez if /?|find /V "" pour plus de détails.

125voto

SilverSkin Points 1136
FOR /r %%X IN (*) DO (ECHO %%X & DEL %%X)

33voto

bk1e Points 13737

La membrane argentée et Anders sont tous les deux corrects. Vous pouvez utiliser des parenthèses pour exécuter plusieurs commandes. Cependant, vous devez vous assurer que les commandes elles-mêmes (et leurs paramètres) ne contiennent pas de parenthèses. cmd goulûment recherches pour la première parenthèse fermante, au lieu de manipuler des ensembles imbriqués de parenthèses gracieusement. Cela peut entraîner le reste de la ligne de commande à l'échec de l'analyse, ou il peut provoquer des parenthèses pour obtenir passé les commandes (par exemple, DEL myfile.txt)).

Une solution de contournement pour ce qui est de diviser le corps de la boucle dans une fonction séparée. Notez que vous avez probablement besoin de sauter à travers le corps de la fonction pour éviter de "tomber".

FOR /r %%X IN (*.txt) DO CALL :loopbody %%X
REM Don't "fall through" to :loopbody.
GOTO :EOF

:loopbody
ECHO %1
DEL %1
GOTO :EOF

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