web-dev-qa-db-fra.com

Comment boucler dans un fichier batch Windows?

Quelle est la syntaxe d'une boucle FOR dans un fichier batch Windows?

143
Pradeep
FOR %%A IN (list) DO command parameters

list est une liste d'éléments quelconques, séparés par des espaces, des virgules ou des points-virgules.

commande peut être toute commande interne ou externe, fichier batch ou même - sous OS/2 et NT - une liste de commandes

parameters contient les paramètres de ligne de commande pour command. Dans cet exemple, la commande sera exécutée une fois pour chaque élément de la liste, en utilisant des paramètres, le cas échéant.

Un type spécial de paramètre (ou même de commande) est %% A, qui sera remplacé successivement par chaque élément de la liste.

De boucles FOR

105
rahul

Si vous voulez faire quelque chose x fois, vous pouvez le faire:

Exemple (x = 200):

FOR /L %%A IN (1,1,200) DO (
  ECHO %%A
)

1,1,200 signifie:

  • Début = 1
  • Incrément par pas = 1
  • Fin = 200
189
vancoeverden

Type:

for /?

et vous obtiendrez plusieurs pages de texte d'aide.

52
Greg Hewgill

Effectuer conditionnellement une commande plusieurs fois.

  • syntax-FOR-Files

    FOR %%parameter IN (set) DO command 
    
  • syntax-FOR-Files-Rooted at Path

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • syntaxe-FOR-Folders

    FOR /D %%parameter IN (folder_set) DO command 
    
  • syntax-FOR-List of numbers

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • syntax-FOR-File contenu

    FOR /F ["options"] %%parameter IN (filenameset) DO command 
    

    ou

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command
    
  • syntax-FOR-Command Results

    FOR /F ["options"] %%parameter IN ('command to process') DO command
    

Il

  • Prendre un ensemble de données
  • Faire un paramètre FOR %%G égal à une partie de ces données
  • Effectuez une commande (en utilisant éventuellement le paramètre dans le cadre de la commande).
  • -> Répéter pour chaque donnée

Si vous utilisez la commande FOR sur la ligne de commande plutôt que dans un programme de traitement par lots, utilisez uniquement le signe de pourcentage: %G au lieu de %%G.

Paramètres FOR

  • Le premier paramètre doit être défini avec un seul caractère, par exemple la lettre G.

  • FOR %%G IN ...

    À chaque itération d'une boucle FOR, la clause IN ( ....) est évaluée et %%G défini sur une valeur différente.

    Si cette clause donne une valeur unique, alors %% G est égal à cette valeur et la commande est exécutée.

    Si la clause aboutit à plusieurs valeurs, des paramètres supplémentaires sont définis implicitement pour les contenir. Ceux-ci sont automatiquement attribués dans l'ordre alphabétique %%H %%I %%J ... (définition implicite de paramètre)

    Si le paramètre fait référence à un fichier, la référence de variable améliorée peut être utilisée pour extraire le nom de fichier/chemin/date/taille.

    Vous pouvez bien sûr choisir n'importe quelle lettre de l'alphabet autre que %%G. mais c'est un bon choix car il n'entre en conflit avec aucune des lettres de format de chemin d'accès (a, d, f, n, p, s, t, x) et fournit la plus longue série de lettres non conflictuelles à utiliser comme paramètres implicites .

31
J. Chomel

FOR vous fournira toutes les informations dont vous aurez besoin sur les boucles FOR, y compris des exemples d'utilisation appropriée.

16
Mechaflash

Essayez ce code:

@echo off
color 02
set num1=0
set num2=1 
set terminator=5
:loop
set /a num1= %num1% + %num2%
if %num1%==%terminator% goto close
goto open
:close
echo %num1%
pause 
exit
:open
echo %num1%
goto loop

num1 est le nombre à incrémenter et num2 est la valeur ajoutée à num1 et terminator est la valeur à la fin de num1. Vous pouvez indiquer une valeur différente pour le terminateur dans cette instruction (if %num1%==%terminator% goto close). Ceci est l'expression booléenne goto close est le processus si le booléen est vrai et goto open est le processus si le booléen est faux.

13
Marlon Ampoon
@echo off
echo.
set /p num1=Enter Prelim:
echo.
set /p num2=Enter Midterm:
echo.
set /p num3=Enter Semi:
echo.
set /p num4=Enter Finals:
echo.
set /a ans=%num1%+%num2%+%num3%+%num4%
set /a avg=%ans%/4
ECHO %avg%
if %avg%>=`95` goto true
:true
echo The two numbers you entered were the same.
echo.
pause
exit
5
Rendell tanyag

De FOR /? doc d'aide:

FOR% variable IN (set) DO commande [paramètres de commande]

% variable Spécifie un paramètre remplaçable par une seule lettre.
(set) Spécifie un ensemble d'un ou plusieurs fichiers. Les caractères génériques peuvent être utilisés. commande Spécifie la commande à exécuter pour chaque fichier.
paramètres de commande
Spécifie les paramètres ou les commutateurs pour la commande spécifiée.

Pour utiliser la commande FOR dans un programme de traitement par lots, spécifiez plutôt la variable %%
de la variable%. Les noms de variables sont sensibles à la casse, donc% i est différent
de moi.

Si Command Extensions est activé, les informations supplémentaires suivantes
Les formes de la commande FOR sont supportées:

FOR/D% variable IN (définir) DO commande [paramètres de commande]

If set contains wildcards, then specifies to match against directory  
names instead of file names.                                          

FOR/R [[lecteur:] chemin]% variable IN (définie) DO commande [paramètres de commande]

Walks the directory tree rooted at [drive:]path, executing the FOR    
statement in each directory of the tree.  If no directory             
specification is specified after /R then the current directory is     
assumed.  If set is just a single period (.) character then it        
will just enumerate the directory tree.                               

FOR/L% variable IN (début, étape, fin) DO commande [paramètres de commande]

The set is a sequence of numbers from start to end, by step amount.   
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would   
generate the sequence (5 4 3 2 1)                                     
5
Kangaroo.H