Comment faire une boucle for dans la ligne de commande windows?

je me demandais si c'était possible? Je ne suis pas habitué à utiliser la ligne de commande windows, mais je dois l'utiliser pour un projet sur lequel je travaille. J'ai un un certain nombre de fichiers dont j'ai besoin pour exécuter une fonction pour chaque. Je suis habitué à travailler avec python, mais évidemment, c'est un peu différent, alors j'espérais de l'aide.

fondamentalement, j'ai besoin de la boucle de for pour itérer à travers 17 fichiers dans un dossier, effectuer une fonction sur chacun (qui est en utilisant le logiciel spécifique I avoir ici pour le projet) et puis qui sortira un fichier avec un nom unique (la fonction exige normalement que je déclare le nom du fichier de sortie) je l'aspirerais et juste le faire à la main pour chacun des 17, mais fondamentalement, il crée une base de données d'un fichier, et ensuite la comparer à chacun des 17. Il doit être itéré plusieurs centaines de fois. Utiliser une boucle for pourrait me sauver des jours de travail.

Suggestions?

28
demandé sur TheFoxx 2012-06-25 19:13:15

4 réponses

l'interpréteur de commandes en ligne a effectivement un for construit que vous pouvez utiliser à partir de l'invite de commandes ou à partir d'un fichier batch.

Pour votre but, vous voulez probablement quelque chose comme:

FOR %i IN (*.ext) DO my-function %i

qui donnera le nom de chaque fichier avec extension *.ext dans le répertoire courant étant passé à ma-fonction (qui pourrait, par exemple, en être une autre .fichier bat).

la partie (*.ext) est la "filespec", et est assez flexible avec la façon dont vous spécifiez les ensembles de fichiers. Par exemple, vous pourriez faire:

FOR %i IN (C:\Some\Other\Dir\*.ext) DO my-function %i

Pour effectuer une opération dans un répertoire différent.

il y a beaucoup d'options pour le filespec et pour en général. Voir

HELP FOR

à partir de l'invite de commande pour plus d'informations.

34
répondu Myk Willis 2012-06-25 15:34:22

Cela peut vous aider à trouver ce que vous cherchez... lot script loop

ma réponse est la suivante:

@echo off
:start
set /a var+=1
if %var% EQU 100 goto end
:: Code you want to run goes here
goto start

:end
echo var has reached %var%.
pause
exit

le premier ensemble de commandes sous l'étiquette start boucle jusqu'à ce qu'une variable, %var% atteigne 100. Une fois que cela se produit, il vous avertira et vous permettra de sortir. Ce code peut être adapté à vos besoins en changeant le 100 à 17 et en mettant votre code ou en utilisant une commande d'appel suivie du chemin du fichier de lot (Maj+Clic droit sur le fichier et sélectionnez "Copier comme chemin") où le commentaire est placé.

3
répondu Josh Girouard 2017-05-23 12:34:37

Pour faire des boucles indépendamment de fichiers ou de répertoires voir e. g. script de commandes en boucle ,. Btw. L'aide de microsoft devrait aider aussi (mais qui creuse)

2
répondu Christian Gosch 2017-05-23 12:18:16

Vous pourriez également envisager d'ajouter " .

par exemple for %i in (*.wav) do opusenc "%~ni.wav" "%~ni.opus" est une très bonne idée.

0
répondu Alice Vixie 2018-05-06 09:45:03