More

    Comment utiliser le fichier Batch pour la boucle For dans Windows

    Un fichier batch est un simple fichier texte qui contient une série de commandes à exécuter séquentiellement par l’Invite de commande de Windows. Les fichiers batch peuvent être utilisés pour automatiser des tâches répétitives, exécuter des programmes ou effectuer des opérations sur des fichiers et des dossiers.

    Une caractéristique importante des fichiers batch est la possibilité de créer des boucles, c’est-à-dire de répéter certaines commandes pour chaque élément d’un ensemble de données. L’utilisation de boucles permet d’économiser du temps et des efforts lors de la rédaction et de l’exécution des fichiers batch.

    Dans cet article, nous expliquerons comment utiliser les fichiers batch for loop dans Windows, y compris la syntaxe, des exemples et des conseils utiles. Nous aborderons également certaines variantes de la boucle for, telles que for /f, for /r et for /d, qui peuvent être utilisées pour traiter des fichiers texte, des sous-dossiers ou des répertoires. Après avoir lu cet article, vous serez en mesure de créer des fichiers batch plus efficaces et plus flexibles en utilisant les boucles for.

    coding

    Qu’est-ce que Batch File For Loop ?

    Un fichier batch for loop est une structure de contrôle qui vous permet d’exécuter une commande spécifique pour chaque élément d’un ensemble de données. L’ensemble de données peut être une liste de valeurs, une plage de nombres ou le résultat d’une autre commande.

    Les commandes exécutées par la boucle for sont appelées blocs de commande et peuvent consister en une ou plusieurs lignes. À chaque itération de la boucle, la valeur actuelle de l’élément est stockée dans une variable, qui peut être utilisée dans le bloc de commande.

    La syntaxe de base d’un fichier batch en boucle est la suivante :

    FOR %%parameter IN (set) DO command

    Où:

    • Le paramètre %% est une variable qui stocke la valeur actuelle de l’élément. Cette variable doit être précédée de deux signes de pourcentage (%%) si elle est utilisée dans un fichier batch, ou d’un signe de pourcentage (%) si elle est utilisée directement à l’invite de commande.
    • (Un ensemble est une collection de données à traiter par une boucle. Cet ensemble peut être une liste de valeurs séparées par des espaces, des virgules ou des points-virgules, ou une plage de nombres spécifiée avec le format   ;(start,step,end). Cet ensemble peut également être le résultat d’une autre commande entre guillemets simples (‘), telle que  ‘dir /b’  ; ou  ‘type file.txt’.
    • est la commande à exécuter pour chaque élément de l’ensemble. Cette commande peut être une commande interne ou externe, un fichier batch ou une liste de commandes. La variable %%parameter% peut être utilisée dans cette commande pour faire référence à la valeur actuelle de l’élément. Si la commande comporte plus d’une ligne, elle doit être entourée de parenthèses (( et  ;)).

    Exemple:

    FOR %%A IN (1 2 3) DO ECHO %%A

    La commande ci-dessus permet d’afficher les chiffres 1, 2 et 3 de manière séquentielle à l’écran.

    FOR %%B IN (1,2,10) DO ECHO %%B

    La commande ci-dessus affichera les nombres 1, 3, 5, 7 et 9 de manière séquentielle à l’écran. En effet, la plage de nombres   ;(1,2,10)  ; signifie que l’on commence à 1, que l’on augmente de 2 à chaque étape, jusqu’à un maximum de 10.

    FOR %%C IN ('dir /b *.txt') DO TYPE %%C

    La commande ci-dessus affiche le contenu de tous les fichiers texte présents dans le répertoire actuel.

    Comment utiliser Batch File For Loop pour traiter des fichiers et des dossiers ?

    L’une des utilisations courantes des fichiers batch pour les boucles consiste à traiter des fichiers et des dossiers en masse. Par exemple, vous pouvez vouloir renommer, supprimer ou déplacer un certain nombre de fichiers ou de dossiers selon un modèle spécifique. Pour ce faire, vous pouvez utiliser certaines des options supplémentaires disponibles pour les boucles de traitement par lots, telles que :

    • /F pour traiter les fichiers texte ou les résultats d’autres commandes.
    • /R pour traiter les sous-dossiers de manière récursive.
    • /D pour traiter les répertoires uniquement.

    Voici la syntaxe du fichier batch for loop avec ces options supplémentaires :

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

    Où:

    • [« options »] sont des options supplémentaires qui peuvent être utilisées pour contrôler la façon dont la boucle for traite les fichiers texte ou les résultats des commandes. Les options les plus couramment utilisées sont les suivantes :
    FOR /R [[drive:]path] %%parameter IN (set) DO command

    Où:

    • [[drive :]path] est le répertoire de départ à traiter par la boucle. S’il n’est pas spécifié, le répertoire courant sera utilisé.
    • (set) est l’ensemble des fichiers à traiter par la boucle. Cet ensemble doit correspondre à un modèle de fichier (globbing de fichier), tel que  *.txt  ou   ?.bat. Si cet ensemble est vide, tous les fichiers seront traités.
    FOR /D %%parameter IN (set) DO command

    Où:

    • (set) est l’ensemble des répertoires à traiter par la boucle. Cet ensemble doit être un motif de correspondance de fichiers (globbing de fichiers), tel que  * ou  ?. Si cet ensemble est vide, tous les répertoires seront traités.

    Exemple:

    FOR /F "skip=1 delims=," %%A IN (data.csv) DO ECHO %%A

    La commande ci-dessus ignore la première ligne du fichier data.csv, qui contient généralement les titres des colonnes, et affiche la valeur de la première colonne de chaque ligne suivante, séparée par des virgules.

    FOR /F "tokens=1,2* usebackq" %%A IN ("file name.txt") DO ECHO %%A %%B %%C

    La commande ci-dessus traite un fichier texte dont le nom contient des espaces et affiche les valeurs de la première, de la deuxième et de la dernière colonne de chaque ligne, séparées par des espaces ou des tabulations.

    FOR /R C:\Users\ %%D IN (*.jpg) DO COPY %%D D:\Backup\

    La commande ci-dessus recherche tous les fichiers portant l’extension .jpg dans le répertoire C:\Users\ et ses sous-répertoires, et les copie dans le répertoire D:\Backup.

    FOR /D %%E IN (*) DO RMDIR /S /Q %%E

    La commande ci-dessus supprime tous les répertoires et leur contenu dans le répertoire actuel.

    Comment utiliser Batch File For Loop pour accéder aux informations sur les fichiers et les dossiers ?

    Outre le traitement des fichiers et des dossiers à l’aide du fichier batch for loop, vous pouvez également accéder aux informations les concernant, telles que le nom, l’extension, la taille, la date de modification, les attributs et le chemin d’accès.

    Pour ce faire, vous pouvez utiliser des modificateurs de chemin sur les variables de boucle. Un modificateur de chemin est un caractère spécial qui peut être ajouté après le signe de pourcentage (%) dans une variable de boucle pour modifier la valeur de cette variable.

    Voici quelques modifications de trajectoire couramment utilisées :

    • %~fparameter pour afficher le chemin complet d’un fichier ou d’un dossier.
    • %~nparameter` pour afficher les noms de fichiers ou de dossiers sans les extensions.
    • %~xparameter pour afficher les extensions de fichiers ou de dossiers.
    • %~sparameter pour afficher le chemin court d’un fichier ou d’un dossier, ce qui est utile si le chemin contient des espaces.
    • %~zparameter pour afficher la taille du fichier ou du dossier en octets.
    • %~tparamètre pour afficher la date et l’heure de la modification d’un fichier ou d’un dossier.
    • %~aparameter pour afficher les attributs d’un fichier ou d’un dossier, tels que R (lecture seule), H (caché), S (système), etc.

    Exemple:

    FOR %%F IN (*.txt) DO ECHO %%F %%~nF %%~xF %%~sF %%~zF %%~tF %%~aF

    La commande ci-dessus affiche des informations sur tous les fichiers texte du répertoire actuel, telles que le nom, l’extension, le chemin court, la taille, la date de modification et les attributs.

    Comment utiliser le fichier Batch For Loop pour créer des chemins relatifs ?

    L’une des difficultés auxquelles vous pouvez être confronté lorsque vous utilisez un fichier batch pour une boucle est la création d’un chemin relatif pour le fichier ou le dossier traité par la boucle. Un chemin relatif est un chemin qui ne contient pas le nom initial du lecteur ou du répertoire, mais seulement une partie d’un chemin différent du répertoire actuel.

    Par exemple, si le répertoire actuel est C:\Users\Alice\Documents, le chemin relatif du fichier C:\Users\Alice\Pictures\image.jpg est …\Pictures\image.jpg.Par exemple, si le répertoire actuel est C:\Users\Alice\Documents, le chemin relatif du fichier C:\Users\Alice\Pictures\image.jpg est …\N- \N- \N- \NPictures\image.jpg.

    La création de chemins relatifs peut s’avérer utile si vous souhaitez déplacer, copier ou renommer des fichiers ou des dossiers vers un autre emplacement, tout en conservant la structure de répertoire d’origine. Par exemple, vous pourriez vouloir déplacer tous les fichiers texte du répertoire C:\Users\Alice\Documents et de ses sous-répertoires vers le répertoire D:\Backup, tout en conservant les sous-répertoires.

    Pour créer des chemins relatifs avec des fichiers batch for loop, vous pouvez utiliser certaines des techniques suivantes :

    • Utilise la variable d’environnement « CD » pour obtenir le répertoire courant et la supprime du chemin complet du fichier ou du dossier en utilisant la commande « SET.
    • Utilisez l’option /V:ON pour activer l’expansion retardée des variables et utilisez un point d’exclamation ( !) comme délimiteur de variable au lieu d’un signe de pourcentage (%). Ceci est utile si vous voulez changer la valeur d’une variable dans une boucle.
    • Utilise les commandes « PUSHD » et « POPD » pour changer le répertoire courant pendant la boucle, et utilise un point (.) pour se référer au répertoire courant.

    Exemple:

    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    FOR /R C:\Users\Alice\Documents %%G IN (*.txt) DO (
      SET "source=%%G"
      SET "destination=!source:%CD%=!"
      ECHO !destination!
    )
    ENDLOCAL

    La commande ci-dessus recherche tous les fichiers texte dans le répertoire C:UsersAliceDocuments et ses sous-répertoires, et affiche leurs chemins d’accès relatifs à partir du répertoire actuel. Par exemple, si le répertoire actuel est C:ousersAliceDocuments, le chemin d’accès relatif du fichier C:ousersAliceDocumentsFolder1File1.txt est Folder1File1.txt.

    @ECHO OFF
    FOR /R C:\Users\Alice\Documents %%H IN (*.txt) DO (
      PUSHD "%%~dpH"
      SET "source=%%H"
      SET "destination=%CD%\%%~nxH"
      ECHO %destination%
      POPD
    )

    La commande ci-dessus recherche tous les fichiers texte dans le répertoire C:UsersAliceDocuments et ses sous-répertoires, et affiche leur chemin d’accès complet en utilisant le répertoire actuel comme préfixe. Par exemple, si le répertoire actuel est D:\NBackup, le chemin complet du fichier C:\NUsers\NAlice\NDocuments\NFolder1\NFile1.txt est D:\NBackup\NFolder1\NFile1.txt.

    Conclusion

    Le fichier batch for loop est une fonctionnalité très utile pour créer des fichiers batch plus efficaces et plus flexibles. En utilisant une boucle for, vous pouvez répéter une commande spécifique pour chaque élément d’un ensemble de données, tel qu’une liste de valeurs, une plage de nombres ou le résultat d’une autre commande.

    Vous pouvez également utiliser certaines des options supplémentaires disponibles pour les boucles for, telles que /F, /R et /D, pour traiter des fichiers texte, des sous-dossiers ou des répertoires. En outre, vous pouvez également accéder à des informations sur les fichiers et les dossiers traités par la boucle, telles que le nom, l’extension, la taille, la date de modification, les attributs et le chemin d’accès, en utilisant la modification du chemin d’accès sur les variables de la boucle.

    Enfin, vous pouvez également créer un chemin relatif des fichiers et dossiers traités par la boucle, en utilisant plusieurs techniques telles que la suppression du répertoire actuel du chemin complet, l’activation de l’expansion retardée des variables ou le changement du répertoire actuel pendant la boucle.

    Nous espérons que cet article sera utile à ceux d’entre vous qui souhaitent en savoir plus sur les fichiers batch pour les boucles dans Windows. Si vous avez des questions ou des suggestions, n’hésitez pas à laisser un commentaire ci-dessous. Merci d’avoir lu cet article.

    Dernières articles