Automatiser la création d’une arborescence de dossiers à l’aide d’un batch DOS

La création d’une arborescence de dossiers peut s’avérer fastidieuse mais heureusement cette tâche est facilement automatisable.

Le présent article s’attachera à présenter une méthodologie permettant d’obtenir une arborescence de dossiers composée systématiquement de la même manière. Par exemple, un service comptable souhaite classer ses dossiers de révision par entité juridique puis par cycle de révision. Pour vingt entités composées chacune de onze cycles, cela fait 220 dossiers à ouvrir…

ARBORESCENCE BATCH

La création manuelle de tous ces dossiers est une tâche particulièrement rébarbative qu’une macro VBA ou un batch DOS automatise aisément. L’article ci-après fournit un exemple de batch DOS (pour des exemples de traitements de fichiers à l’aide de macros VBA, consulter les articles suivants : copier, renommer et supprimer de grandes quantités de fichiers et décompresser en masse des fichiers Zip).

Introduction :

Un batch (fournée en anglais) est un script comprenant un ensemble de commandes qui une fois lancé automatise l’exécution de tâches préprogrammées. Ce langage de script, spécialisé sur la gestion de fichiers, est une survivance du système d’exploitation MS/DOS peu à peu remplacé par Windows dès la fin des années 90. L’acronyme MS/DOS signifie Microsoft Disk Operating System, littéralement système d’exploitation du disque (édité par Microsoft).

Le batch se matérialise par un fichier texte (extension *.bat) éditable à l’aide d’un simple éditeur de texte à l’image de Bloc-note (notepad). Il se lance d’un simple double clic et s’exécute à l’ancienne, en mode console.

Console Windows 10

IMPORTANT : L’attention de l’utilisateur est attirée sur le fait qu’il n’est pas possible d’annuler les actions réalisées par un batch. Les conséquences en cas d’erreur de programmation peuvent être aussi dévastatrices (déplacement, renommage ou, pire, suppression de fichiers non désirés, sans parler du formatage de disque dur…) que les effets causés par un code malveillant (virus…). Il est donc important de comprendre la portée de chaque commande insérée dans un script et de tester ses batchs dans un environnement test (notamment sur des fichiers sauvegardés en amont). Aucune garantie de bon fonctionnement ne peut être apportée par l’auteur de cet article y compris sur l’usage des batchs fournis sur ce blog. En exécutant ces codes, le lecteur accepte de prendre le risque de perte de fichiers à son propre compte.

Pour réaliser ce projet, deux étapes essentielles :

  • Modéliser l’arborescence de dossiers ;
  • Coder le script de création de l’arborescence.

Modélisation de l’arborescence :

Avant de passer à la phase de rédaction du script, il est nécessaire de poser sur “papier” (ou modéliser) l’arborescence à obtenir. Dans le cas présent, l’arborescence à obtenir comprend en premier niveau l’identifiant de l’entité juridique et en second niveau les cycles de révision comptable.

La liste des entités juridiques et celle des cycles comptables seront stockées dans des variables tableau ; le script puisera les données de ces variables. Les variables tableaux sont une catégorie de variables qui permettent de stocker non pas une seule donnée comme une simple variable (pour mémoire, une variable est un espace mémoire accessible par un programme à l’aide d’un nom ; selon son type, une variable peut stocker une donnée : une chaîne de caractères, un montant chiffré…) mais une des séries de données sur une ou plusieurs dimensions. Plus d’infos sur les variables tableau : https://www.auditsi.eu/?p=5678.

Pour faciliter la création des deux variables tableau, l’utilisateur saisit le nom ou le code des entités ainsi que les cycles de révision dans le classeur Excel fourni ci-après.

Une formule de calcul Excel crée les deux variables tableau à insérer dans le batch à partir des données saisies.

Copie écran des codes entité saisis dans le tableau Excel :

MKDIR Variable tableau Entités

La cellule de couleur bleue représente la définition de la variable table “tableau_entites” qui sera reprise dans le batch.

MKDIR Liste cycles

Copie écran des cycles de révision saisis dans le tableau Excel :

MKDIR Variable tableau Cycles

La cellule de couleur bleue représente la définition de la variable table “tableau_cycles” à reprendre dans le script.

Les deux cellules en bleu contiennent la définition des deux variables tableau à insérer dans le script (cf étape suivante) :

  • set tableau_entites=(“AMC” “AOA” “AOL” “APA14” “BCO” “DAC” “FFM” “FMD” “GIEMS” “HFM” “IPCO” “KTM” “LEM” “LOGAUT” “MAB” “MAC” “MACH” “MACN” “MACS” “MAD”)
  • set tableau_cycles=(“A-REGULARITE FORMELLE” “B-VENTES – CLIENTS” “C-STOCKS ET ENCOURS” “D-IMMOBILISATIONS” “E-DISPONIBILITES – PLACEMENTS – FINANCEMENT” “G-ACHATS – FOURNISSEURS” “H-SOCIAL” “J-FONDS PROPRES – PROVISIONS” “L-FISCAL” “M-AUTRES COMPTES” “Z-INTERCOMPAGNIES”)

Code du script de création de l’arborescence :

Le script est édité avec un éditeur de texte basique tel le Bloc-note (notepad) de Windows :

Bloc note MKDIR

Quelques explications sur le code source du script fourni plus bas :

La commande “rem” (diminutif de remark en anglais) est suivi de commentaires. Ils ont vocation à documenter le code. Ils ne sont donc pas exécutés.

L’assignation de données à une variable est introduite par le mot clef “set” ; exemple :

set chemin=C:\TESTS\DOSSIERS DE REVISION\2023-12-31

Ici, la variable “chemin” prend la valeur “C:\TESTS\DOSSIERS DE REVISION\2023-12-31” à l’aide du signe égal (=).

L’assignation de valeurs à une variable tableau reprend un fonctionnement similaire à une variable classique. Les valeurs sont séparées les unes des autres par un espace :

set tableau_entites=(“AMC” “AOA” “AOL” “APA14” “BCO” “DAC” “FFM” “FMD” “GIEMS” “HFM” “IPCO” “KTM” “LEM” “LOGAUT” “MAB” “MAC” “MACH” “MACN” “MACS” “MAD”)

C’est à cet endroit du code qu’il convient de reprendre les deux variables tableau générées avec Excel à l’aide d’un Copier / Collage spécial Valeurs.

La ligne “chcp 65001 > nul” active le codage UTF-8 afin d’afficher correctement les caractères spéciaux, y compris les accents français.

Deux boucles compteurs for… in… do (…) imbriquées l’une dans l’autre parcourent les deux variables tableau tableaux Tableau_Entites et Tableau_Cycles et constituent progressivement l’arborescence de dossiers. L’entité et le cycle en cours sont stockés provisoirement dans les variables entite et cycle. A chaque itération des boucles compteur, la commande mkdir (ou md) crée le dossier correspondant dans l’arborescence en utilisant les noms de la société et du cycle de l’occurrence en cours. Une boucle est une structure de programmation qui permet de répéter un ensemble d’instructions un certain nombre de fois. Il existe plusieurs types de boucles dont les boucles compteur. Plus d’informations sur les boucles compteur : https://www.auditsi.eu/?p=1696.

Si une erreur est identifiée (structure conditionnelle If… (…) Else (…)) lors de la création du dossier par mkdir (errorlevel 1), un message est affiché à l’aide de la commande echo. Dans le cas contraire, un message “Dossier créé avec succès” apparaît dans la console.

L’instruction “pause” commande à la console d’attendre que l’utilisateur appuie la touche Entrée avant de continuer l’exécution du batch. Dans le cas présent, cela laisse le temps à l’utilisateur de lire les messages d’exécution ; en effet dès que l’exécution du batch est terminée (ici le temps d’exécution est de quelques secondes), la console se referme sans laisser le temps à l’utilisateur de prendre connaissance des messages.

Exécution du batch :

Pour déclencher l’exécution d’un batch, double-cliquer sur le fichier batch à partir du gestionnaire de fichiers Windows ou en tapant non nom (ici MKDIR REVISION.BAT) dans la fenêtre de l’invite de commandes (console DOS). Cette exécution est du ressort de l’invite de commande (console DOS dépourvue d’interface graphique).

Console Windows 10

La console est une survivance des années 80 qui peut rendre encore de nombreux services. Par exemple en matière d’automatisation de manipulation de fichiers : copie, création, déplacement… Cette console est dotée d’un langage de script qui offre un large panel de commandes.

Affichage du suivi de la création des dossiers dans la console DOS, un franc succès :

MKDIR Console après exécution

Appuyer sur la touche Entrée. La console se referme. L’exécution du batch est à présent terminée. Il ne reste plus qu’à contempler l’effet produit dans l’explorateur de fichiers et à se satisfaire du temps économisé ! Ca mérite bien une petite pause café ! 😉

ARBORESCENCE BATCH

Le code source du batch est fourni ci-après. Le classeur Excel de création des variables tableau et le fichier batch (*.bat) sont téléchargeables en pied d’article.

Code-source du batch :

rem -----------------------------------------------------------------------
rem | Batch de création d'arborescence de dossier de révision comptable   |
rem |                                                                     |
rem | v1.0 06/2023                                                        |
rem | Plus d'infos : www.auditsi.eu                                       |
rem -----------------------------------------------------------------------

rem -----------------------------------------------------------------------
rem Déclaration des variables
rem ---Chemin d'accès où créer l'arborescence
set chemin=C:\TESTS\DOSSIERS DE REVISION\2023-12-31
rem ---Liste des entités (1er niveau de sous-dossiers)
set tableau_entites=("AMC" "AOA" "AOL" "APA14" "BCO" "DAC" "FFM" "FMD" "GIEMS" "HFM" "IPCO" "KTM" "LEM" "LOGAUT" "MAB" "MAC" "MACH" "MACN" "MACS" "MAD")
rem ---Liste des cycles comptables (2ème niveau de sous-dossiers)
set tableau_cycles=("A-REGULARITE FORMELLE" "B-VENTES - CLIENTS" "C-STOCKS ET ENCOURS" "D-IMMOBILISATIONS" "E-DISPONIBILITES - PLACEMENTS - FINANCEMENT" "G-ACHATS - FOURNISSEURS" "H-SOCIAL" "J-FONDS PROPRES - PROVISIONS" "L-FISCAL" "M-AUTRES COMPTES" "Z-INTERCOMPAGNIES")

rem Autorise l'affichage des accents
chcp 65001 > nul

rem Désactive l'affichage des fonctions en cours d'exéction
@echo off

rem Efface le contenu de l'écran
cls

echo --------------------------------------------------------------
echo Création de l'arborescence des dossiers de révision comptable
echo --------------------------------------------------------------
echo.

rem Boucles compteur de création de l'arborescence
rem ---la 1ère boucle crée les sous-dossiers entités
for %%s in %tableau_entites% do (
    rem la 2ème boucle crée les sous-dossiers cycles
    for %%c in %tableau_cycles% do (
        setlocal enabledelayedexpansion
        set "entite=%%~s"
        set "cycle=%%~c"

        rem mkdir ou md : crée un dossier ; 2>nul -> désactive l'affichage des messages d'erreur (STDERR = 2 Error text output)
        mkdir "%chemin%\!entite!\!cycle!" 2>nul

        rem Affichage d'un message personnalisé en cas d'erreur
        if errorlevel 1 (
            echo Erreur lors de la création du dossier "%chemin%\!entite!\!cycle!".
        ) else (
            echo Dossier "%chemin%\!entite!\!cycle!" créé avec succès.
        )
        endlocal
    )
)

echo Opérations terminées
pause

Autres articles en rapport avec le sujet de l’automatisation de la gestion de fichiers :

Sur ce projet, ChatGPT m’a bien rendu service notamment sur le traitement des variables tableau dont la syntaxe version batch n’est pas des plus simples à comprendre. Pour intégrer ChatGPT dans vos processus de création, consulter l’article : ChatGPT et consorts : pour quoi faire ? (>>> tous les articles en rapport avec l’intelligence artificielleChatGPT).

Retrouvez le sujet de l’automatisation et bien d’autres dans la formation à l’analyse de données et l’automatisation des tâches

___

Pour approfondir le sujet : Automatisation / Batch DOS / VBA

Share Button
Création Des Variables Tableau MKDIR
Création Des Variables Tableau MKDIR
Creation-des-variables-tableau-MKDIR.xlsx
13 KiB
106 téléchargements
Détails...
MKDIR REVISION
MKDIR REVISION
MKDIR-REVISION.bat
2 KiB
76 téléchargements
Détails...
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.