{"id":11371,"date":"2023-09-25T06:33:16","date_gmt":"2023-09-25T04:33:16","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=11371"},"modified":"2023-08-20T23:25:06","modified_gmt":"2023-08-20T21:25:06","slug":"automatiser-la-creation-dune-arborescence-de-dossiers-a-laide-dun-batch-dos","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=11371","title":{"rendered":"Automatiser la cr\u00e9ation d&#8217;une arborescence de dossiers \u00e0 l&#8217;aide d&#8217;un batch DOS"},"content":{"rendered":"<p style=\"text-align: justify;\">La cr\u00e9ation d&#8217;une <strong>arborescence de dossiers<\/strong> peut s&#8217;av\u00e9rer fastidieuse mais heureusement cette t\u00e2che est <strong>facilement automatisable<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Le pr\u00e9sent article s&#8217;attachera \u00e0 pr\u00e9senter une <strong>m\u00e9thodologie<\/strong> permettant d&#8217;obtenir une arborescence de dossiers compos\u00e9e syst\u00e9matiquement de la m\u00eame mani\u00e8re. Par exemple, un service comptable souhaite classer ses dossiers de r\u00e9vision par entit\u00e9 juridique puis par cycle de r\u00e9vision. Pour vingt entit\u00e9s compos\u00e9es chacune de onze cycles, cela fait 220 dossiers \u00e0 ouvrir&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11372\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/ARBORESCENCE-BATCH.png\" alt=\"ARBORESCENCE BATCH\" width=\"377\" height=\"671\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/ARBORESCENCE-BATCH.png 377w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/ARBORESCENCE-BATCH-169x300.png 169w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/p>\n<p style=\"text-align: justify;\">La cr\u00e9ation manuelle de tous ces dossiers est une <strong>t\u00e2che particuli\u00e8rement r\u00e9barbative<\/strong> qu&#8217;une macro VBA ou un <strong>batch DOS automatise ais\u00e9ment<\/strong>. L&#8217;article ci-apr\u00e8s fournit un exemple de batch DOS (pour des exemples de traitements de fichiers \u00e0 l&#8217;aide de macros VBA, consulter les articles suivants : <a href=\"https:\/\/www.auditsi.eu\/?p=9515\">copier, renommer et supprimer de grandes quantit\u00e9s de fichiers<\/a> et <a href=\"https:\/\/www.auditsi.eu\/?p=10246\">d\u00e9compresser en masse des fichiers Zip<\/a>).<\/p>\n<p style=\"text-align: justify;\"><em><strong>Introduction :<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Un batch (fourn\u00e9e en anglais) est un script comprenant un <strong>ensemble de commandes<\/strong> qui une fois lanc\u00e9 <strong>automatise<\/strong> l&#8217;ex\u00e9cution de t\u00e2ches pr\u00e9programm\u00e9es. Ce langage de script, sp\u00e9cialis\u00e9 sur la <strong>gestion de fichiers<\/strong>, est une survivance du <a href=\"https:\/\/www.auditsi.eu\/?page_id=2493\">syst\u00e8me d&#8217;exploitation MS\/DOS<\/a> peu \u00e0 peu remplac\u00e9 par Windows d\u00e8s la fin des ann\u00e9es 90. L&#8217;acronyme MS\/DOS signifie <em>Microsoft Disk Operating System<\/em>, litt\u00e9ralement syst\u00e8me d&#8217;exploitation du disque (\u00e9dit\u00e9 par Microsoft).<\/p>\n<p style=\"text-align: justify;\">Le batch se mat\u00e9rialise par un <strong>fichier texte<\/strong> (extension *.bat) \u00e9ditable \u00e0 l&#8217;aide d&#8217;un simple \u00e9diteur de texte \u00e0 l&#8217;image de Bloc-note (<em>notepad<\/em>). Il se lance d&#8217;un simple double clic et s&#8217;ex\u00e9cute \u00e0 l&#8217;ancienne, en mode console.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9590\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10.png\" alt=\"Console Windows 10\" width=\"979\" height=\"512\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10.png 979w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10-300x157.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10-768x402.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10-730x382.png 730w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/><\/p>\n<p style=\"text-align: justify;\"><em><span style=\"text-decoration: underline;\"><span style=\"background-color: #ffff00;\"><strong>IMPORTANT<\/strong><\/span><\/span> : L&#8217;attention de l&#8217;utilisateur est attir\u00e9e sur le fait qu&#8217;il n&#8217;est pas possible d&#8217;annuler les actions r\u00e9alis\u00e9es par un batch. Les cons\u00e9quences en cas d&#8217;erreur de programmation peuvent \u00eatre aussi d\u00e9vastatrices (d\u00e9placement, renommage ou, pire, suppression de fichiers non d\u00e9sir\u00e9s, sans parler du formatage de disque dur&#8230;) que les effets caus\u00e9s par un code malveillant (virus&#8230;). Il est donc important de comprendre la port\u00e9e de chaque commande ins\u00e9r\u00e9e dans un script et de tester ses batchs dans un environnement test (notamment sur des fichiers sauvegard\u00e9s en amont). <strong>Aucune garantie de bon fonctionnement<\/strong> ne peut \u00eatre apport\u00e9e par l&#8217;auteur de cet article y compris sur l&#8217;usage des batchs fournis sur ce blog. En ex\u00e9cutant ces codes, <strong>le lecteur accepte de prendre le risque de perte de fichiers \u00e0 son propre compte<\/strong>.<\/em><\/p>\n<p style=\"text-align: justify;\">Pour r\u00e9aliser ce projet, deux \u00e9tapes essentielles :<\/p>\n<ul>\n<li>Mod\u00e9liser l&#8217;arborescence de dossiers ;<\/li>\n<li>Coder le script de cr\u00e9ation de l&#8217;arborescence.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong><em>Mod\u00e9lisation de l&#8217;arborescence :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Avant de passer \u00e0 la phase de r\u00e9daction du script, il est n\u00e9cessaire de poser sur &#8220;papier&#8221; (ou mod\u00e9liser) l&#8217;arborescence \u00e0 obtenir. Dans le cas pr\u00e9sent, l&#8217;arborescence \u00e0 obtenir comprend en premier niveau l&#8217;identifiant de l&#8217;entit\u00e9 juridique et en second niveau les cycles de r\u00e9vision comptable.<\/p>\n<p style=\"text-align: justify;\">La liste des entit\u00e9s juridiques et celle des cycles comptables seront stock\u00e9es dans des variables tableau ; le script puisera les donn\u00e9es de ces variables. Les <strong>variables tableaux<\/strong> sont une cat\u00e9gorie de variables qui permettent de stocker non pas une seule donn\u00e9e comme une simple variable (pour m\u00e9moire, une variable est un espace m\u00e9moire accessible par un programme \u00e0 l\u2019aide d\u2019un nom ; selon son type, une variable peut stocker une donn\u00e9e : une cha\u00eene de caract\u00e8res, un montant chiffr\u00e9\u2026) mais une <strong>des s\u00e9ries de donn\u00e9es<\/strong> sur une ou plusieurs dimensions. Plus d&#8217;infos sur les variables tableau : <a href=\"https:\/\/www.auditsi.eu\/?p=5678\">https:\/\/www.auditsi.eu\/?p=5678<\/a>.<\/p>\n<p style=\"text-align: justify;\">Pour faciliter la cr\u00e9ation des deux variables tableau, l&#8217;utilisateur saisit le nom ou le code des entit\u00e9s ainsi que les cycles de r\u00e9vision dans le <strong>classeur Excel<\/strong> fourni ci-apr\u00e8s.<\/p>\n<p style=\"text-align: justify;\">Une <strong>formule de calcul Excel cr\u00e9e les deux variables tableau<\/strong> \u00e0 ins\u00e9rer dans le <em>batch<\/em> \u00e0 partir des donn\u00e9es saisies.<\/p>\n<p style=\"text-align: justify;\">Copie \u00e9cran des codes entit\u00e9 saisis dans le tableau Excel :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11373\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Entites.png\" alt=\"MKDIR Variable tableau Entit\u00e9s\" width=\"1260\" height=\"554\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Entites.png 1260w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Entites-300x132.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Entites-1024x450.png 1024w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Entites-768x338.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Entites-730x321.png 730w\" sizes=\"auto, (max-width: 1260px) 100vw, 1260px\" \/><\/p>\n<p style=\"text-align: justify;\">La cellule de couleur bleue repr\u00e9sente la d\u00e9finition de la variable table &#8220;tableau_entites&#8221; qui sera reprise dans le <em>batch<\/em>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11374\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Liste-cycles.png\" alt=\"MKDIR Liste cycles\" width=\"380\" height=\"284\"><\/p>\n<p style=\"text-align: justify;\">Copie \u00e9cran des cycles de r\u00e9vision saisis dans le tableau Excel :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11376\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Cycles.png\" alt=\"MKDIR Variable tableau Cycles\" width=\"1007\" height=\"343\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Cycles.png 1007w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Cycles-300x102.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Cycles-768x262.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Variable-tableau-Cycles-730x249.png 730w\" sizes=\"auto, (max-width: 1007px) 100vw, 1007px\" \/><\/p>\n<p style=\"text-align: justify;\">La cellule de couleur bleue repr\u00e9sente la d\u00e9finition de la variable table &#8220;tableau_cycles&#8221; \u00e0 reprendre dans le script.<\/p>\n<p style=\"text-align: justify;\">Les deux cellules en bleu contiennent la d\u00e9finition des deux variables tableau <strong>\u00e0 ins\u00e9rer dans le script<\/strong> (cf \u00e9tape suivante) :<\/p>\n<ul>\n<li>set tableau_entites=(&#8220;AMC&#8221; &#8220;AOA&#8221; &#8220;AOL&#8221; &#8220;APA14&#8221; &#8220;BCO&#8221; &#8220;DAC&#8221; &#8220;FFM&#8221; &#8220;FMD&#8221; &#8220;GIEMS&#8221; &#8220;HFM&#8221; &#8220;IPCO&#8221; &#8220;KTM&#8221; &#8220;LEM&#8221; &#8220;LOGAUT&#8221; &#8220;MAB&#8221; &#8220;MAC&#8221; &#8220;MACH&#8221; &#8220;MACN&#8221; &#8220;MACS&#8221; &#8220;MAD&#8221;)<\/li>\n<li>set tableau_cycles=(&#8220;A-REGULARITE FORMELLE&#8221; &#8220;B-VENTES &#8211; CLIENTS&#8221; &#8220;C-STOCKS ET ENCOURS&#8221; &#8220;D-IMMOBILISATIONS&#8221; &#8220;E-DISPONIBILITES &#8211; PLACEMENTS &#8211; FINANCEMENT&#8221; &#8220;G-ACHATS &#8211; FOURNISSEURS&#8221; &#8220;H-SOCIAL&#8221; &#8220;J-FONDS PROPRES &#8211; PROVISIONS&#8221; &#8220;L-FISCAL&#8221; &#8220;M-AUTRES COMPTES&#8221; &#8220;Z-INTERCOMPAGNIES&#8221;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong><em>Code du script de cr\u00e9ation de l&#8217;arborescence :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Le script est \u00e9dit\u00e9 avec un \u00e9diteur de texte basique tel le Bloc-note (<em>notepad<\/em>) de Windows :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11472\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/07\/Bloc-note-MKDIR.png\" alt=\"Bloc note MKDIR\" width=\"750\" height=\"656\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/07\/Bloc-note-MKDIR.png 750w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/07\/Bloc-note-MKDIR-300x262.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/07\/Bloc-note-MKDIR-730x639.png 730w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p style=\"text-align: justify;\"><em>Quelques explications sur le code source du script fourni plus bas :<\/em><\/p>\n<p style=\"text-align: justify;\">La commande &#8220;rem&#8221; (diminutif de <em>remark<\/em> en anglais) est suivi de <strong>commentaires<\/strong>. Ils ont vocation \u00e0 documenter le code. Ils ne sont donc pas ex\u00e9cut\u00e9s.<\/p>\n<p style=\"text-align: justify;\">L&#8217;<strong>assignation de donn\u00e9es \u00e0 une variable<\/strong> est introduite par le mot clef &#8220;set&#8221; ; exemple :<\/p>\n<p style=\"text-align: center;\">set chemin=C:\\TESTS\\DOSSIERS DE REVISION\\2023-12-31<\/p>\n<p style=\"text-align: justify;\">Ici, la variable &#8220;chemin&#8221; prend la valeur &#8220;C:\\TESTS\\DOSSIERS DE REVISION\\2023-12-31&#8221; \u00e0 l&#8217;aide du signe \u00e9gal (=).<\/p>\n<p style=\"text-align: justify;\">L&#8217;assignation de valeurs \u00e0 une <strong>variable tableau<\/strong> reprend un fonctionnement similaire \u00e0 une variable classique. Les valeurs sont s\u00e9par\u00e9es les unes des autres par un espace :<\/p>\n<p style=\"text-align: center;\">set tableau_entites=(&#8220;AMC&#8221; &#8220;AOA&#8221; &#8220;AOL&#8221; &#8220;APA14&#8221; &#8220;BCO&#8221; &#8220;DAC&#8221; &#8220;FFM&#8221; &#8220;FMD&#8221; &#8220;GIEMS&#8221; &#8220;HFM&#8221; &#8220;IPCO&#8221; &#8220;KTM&#8221; &#8220;LEM&#8221; &#8220;LOGAUT&#8221; &#8220;MAB&#8221; &#8220;MAC&#8221; &#8220;MACH&#8221; &#8220;MACN&#8221; &#8220;MACS&#8221; &#8220;MAD&#8221;)<\/p>\n<p style=\"text-align: justify;\">C&#8217;est \u00e0 cet endroit du code qu&#8217;il convient de reprendre les deux variables tableau g\u00e9n\u00e9r\u00e9es avec Excel \u00e0 l&#8217;aide d&#8217;un Copier \/ Collage sp\u00e9cial Valeurs.<\/p>\n<p style=\"text-align: justify;\">La ligne &#8220;chcp 65001 &gt; nul&#8221; active le codage UTF-8 afin d&#8217;afficher correctement les caract\u00e8res sp\u00e9ciaux, y compris les accents fran\u00e7ais.<\/p>\n<p style=\"text-align: justify;\">Deux <strong>boucles compteurs<\/strong> <em>for&#8230; in&#8230; do (&#8230;)<\/em> imbriqu\u00e9es l&#8217;une dans l&#8217;autre parcourent les deux variables tableau tableaux <em>Tableau_Entites<\/em> et <em>Tableau_Cycles<\/em> et constituent progressivement l&#8217;arborescence de dossiers. L&#8217;entit\u00e9 et le cycle en cours sont stock\u00e9s provisoirement dans les variables <em>entite<\/em> et <em>cycle<\/em>. A chaque <strong>it\u00e9ration des boucles compteur<\/strong>, la commande <em><strong>mkdir<\/strong><\/em> (ou md) cr\u00e9e le dossier correspondant dans l&#8217;arborescence en utilisant les noms de la soci\u00e9t\u00e9 et du cycle de l&#8217;occurrence en cours. Une boucle est une structure de programmation qui permet de r\u00e9p\u00e9ter un ensemble d\u2019instructions un certain nombre de fois. Il existe plusieurs types de boucles dont les boucles compteur. Plus d&#8217;informations sur les boucles compteur : <a href=\"https:\/\/www.auditsi.eu\/?p=1696\">https:\/\/www.auditsi.eu\/?p=1696<\/a>.<\/p>\n<p style=\"text-align: justify;\">Si une erreur est identifi\u00e9e (<a href=\"https:\/\/www.auditsi.eu\/?p=1797\"><strong>structure conditionnelle<\/strong> <em>If&#8230; (&#8230;) Else (&#8230;)<\/em><\/a>) lors de la cr\u00e9ation du dossier par <em>mkdir<\/em> (<em>errorlevel 1<\/em>), un message est affich\u00e9 \u00e0 l&#8217;aide de la <strong>commande <em>echo<\/em><\/strong>. Dans le cas contraire, un message &#8220;Dossier cr\u00e9\u00e9 avec succ\u00e8s&#8221; appara\u00eet dans la console.<\/p>\n<p style=\"text-align: justify;\">L&#8217;instruction &#8220;<strong>pause<\/strong>&#8221; commande \u00e0 la console d&#8217;attendre que l&#8217;utilisateur <strong>appuie la touche Entr\u00e9e avant de continuer l&#8217;ex\u00e9cution du batch<\/strong>. Dans le cas pr\u00e9sent, cela laisse le temps \u00e0 l&#8217;utilisateur de lire les messages d&#8217;ex\u00e9cution ; en effet d\u00e8s que l&#8217;ex\u00e9cution du batch est termin\u00e9e (ici le temps d&#8217;ex\u00e9cution est de quelques secondes), la console se referme sans laisser le temps \u00e0 l&#8217;utilisateur de prendre connaissance des messages.<\/p>\n<p style=\"text-align: justify;\"><strong><em>Ex\u00e9cution du batch :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Pour d\u00e9clencher l&#8217;ex\u00e9cution d&#8217;un <em>batch<\/em>, double-cliquer sur le fichier <em>batch<\/em> \u00e0 partir du gestionnaire de fichiers Windows ou en tapant non nom (ici MKDIR REVISION.BAT) dans la fen\u00eatre de l&#8217;invite de commandes (console DOS). Cette ex\u00e9cution est du ressort de l&#8217;invite de commande (console DOS d\u00e9pourvue d&#8217;interface graphique).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9590\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10.png\" alt=\"Console Windows 10\" width=\"979\" height=\"512\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10.png 979w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10-300x157.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10-768x402.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/04\/Console-Windows-10-730x382.png 730w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/><\/p>\n<p style=\"text-align: justify;\">La <a href=\"https:\/\/www.auditsi.eu\/?page_id=2493\">console<\/a> est une survivance des <a href=\"https:\/\/www.auditsi.eu\/?page_id=2119\">ann\u00e9es 80<\/a> qui peut rendre encore de nombreux services. Par exemple en mati\u00e8re d&#8217;automatisation de manipulation de fichiers : copie, cr\u00e9ation, d\u00e9placement&#8230; Cette console est dot\u00e9e d&#8217;un langage de script qui offre un large panel de commandes.<\/p>\n<p style=\"text-align: justify;\">Affichage du suivi de la cr\u00e9ation des dossiers dans la console DOS, un franc succ\u00e8s :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11377\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Console-apres-execution.png\" alt=\"MKDIR Console apr\u00e8s ex\u00e9cution\" width=\"978\" height=\"510\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Console-apres-execution.png 978w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Console-apres-execution-300x156.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Console-apres-execution-768x400.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/MKDIR-Console-apres-execution-730x381.png 730w\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" \/><\/p>\n<p style=\"text-align: justify;\">Appuyer sur la touche Entr\u00e9e. La console se referme. L&#8217;ex\u00e9cution du batch est \u00e0 pr\u00e9sent termin\u00e9e. Il ne reste plus qu&#8217;\u00e0 contempler l&#8217;effet produit dans l&#8217;explorateur de fichiers et \u00e0 se satisfaire du temps \u00e9conomis\u00e9 ! Ca m\u00e9rite bien une petite pause caf\u00e9 ! \ud83d\ude09<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11372\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/ARBORESCENCE-BATCH.png\" alt=\"ARBORESCENCE BATCH\" width=\"377\" height=\"671\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/ARBORESCENCE-BATCH.png 377w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/06\/ARBORESCENCE-BATCH-169x300.png 169w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/p>\n<p style=\"text-align: justify;\">Le code source du <em>batch<\/em> est fourni ci-apr\u00e8s. Le classeur Excel de cr\u00e9ation des variables tableau et le fichier <em>batch<\/em> (*.bat) sont t\u00e9l\u00e9chargeables en pied d&#8217;article.<\/p>\n<p style=\"text-align: justify;\">Code-source du batch :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bat\">rem -----------------------------------------------------------------------\r\nrem | Batch de cr\u00e9ation d'arborescence de dossier de r\u00e9vision comptable   |\r\nrem |                                                                     |\r\nrem | v1.0 06\/2023                                                        |\r\nrem | Plus d'infos : www.auditsi.eu                                       |\r\nrem -----------------------------------------------------------------------\r\n\r\nrem -----------------------------------------------------------------------\r\nrem D\u00e9claration des variables\r\nrem ---Chemin d'acc\u00e8s o\u00f9 cr\u00e9er l'arborescence\r\nset chemin=C:\\TESTS\\DOSSIERS DE REVISION\\2023-12-31\r\nrem ---Liste des entit\u00e9s (1er niveau de sous-dossiers)\r\nset tableau_entites=(\"AMC\" \"AOA\" \"AOL\" \"APA14\" \"BCO\" \"DAC\" \"FFM\" \"FMD\" \"GIEMS\" \"HFM\" \"IPCO\" \"KTM\" \"LEM\" \"LOGAUT\" \"MAB\" \"MAC\" \"MACH\" \"MACN\" \"MACS\" \"MAD\")\r\nrem ---Liste des cycles comptables (2\u00e8me niveau de sous-dossiers)\r\nset 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\")\r\n\r\nrem Autorise l'affichage des accents\r\nchcp 65001 &gt; nul\r\n\r\nrem D\u00e9sactive l'affichage des fonctions en cours d'ex\u00e9ction\r\n@echo off\r\n\r\nrem Efface le contenu de l'\u00e9cran\r\ncls\r\n\r\necho --------------------------------------------------------------\r\necho Cr\u00e9ation de l'arborescence des dossiers de r\u00e9vision comptable\r\necho --------------------------------------------------------------\r\necho.\r\n\r\nrem Boucles compteur de cr\u00e9ation de l'arborescence\r\nrem ---la 1\u00e8re boucle cr\u00e9e les sous-dossiers entit\u00e9s\r\nfor %%s in %tableau_entites% do (\r\n    rem la 2\u00e8me boucle cr\u00e9e les sous-dossiers cycles\r\n    for %%c in %tableau_cycles% do (\r\n        setlocal enabledelayedexpansion\r\n        set \"entite=%%~s\"\r\n        set \"cycle=%%~c\"\r\n\r\n        rem mkdir ou md : cr\u00e9e un dossier ; 2&gt;nul -&gt; d\u00e9sactive l'affichage des messages d'erreur (STDERR = 2 Error text output)\r\n        mkdir \"%chemin%\\!entite!\\!cycle!\" 2&gt;nul\r\n\r\n        rem Affichage d'un message personnalis\u00e9 en cas d'erreur\r\n        if errorlevel 1 (\r\n            echo Erreur lors de la cr\u00e9ation du dossier \"%chemin%\\!entite!\\!cycle!\".\r\n        ) else (\r\n            echo Dossier \"%chemin%\\!entite!\\!cycle!\" cr\u00e9\u00e9 avec succ\u00e8s.\r\n        )\r\n        endlocal\r\n    )\r\n)\r\n\r\necho Op\u00e9rations termin\u00e9es\r\npause<\/pre>\n<p style=\"text-align: justify;\">Autres articles en rapport avec le sujet de l&#8217;<strong>automatisation de la gestion de fichiers<\/strong> :<\/p>\n<ul style=\"text-align: justify;\">\n<li><a href=\"https:\/\/www.auditsi.eu\/?p=9515\">copier, renommer et supprimer de grandes quantit\u00e9s de fichiers<\/a><\/li>\n<li><a href=\"https:\/\/www.auditsi.eu\/?p=10246\">d\u00e9compresser en masse des fichiers Zip<\/a><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Sur ce projet, ChatGPT m&#8217;a bien rendu service notamment sur le traitement des variables tableau dont la syntaxe version <em>batch<\/em> n&#8217;est pas des plus simples \u00e0 comprendre. Pour int\u00e9grer ChatGPT dans vos processus de cr\u00e9ation, consulter l&#8217;article : <a href=\"https:\/\/www.auditsi.eu\/?p=10976\">ChatGPT et consorts : pour quoi faire ?<\/a> (<span style=\"color: #993366;\"><em><strong>&gt;&gt;&gt;<\/strong><\/em><\/span> tous les articles en rapport avec l\u2019<a href=\"https:\/\/www.auditsi.eu\/?tag=intelligence-artificielle\">intelligence artificielle<\/a>,&nbsp;<a href=\"https:\/\/www.auditsi.eu\/?tag=chatgpt\">ChatGPT<\/a>).<\/p>\n<p style=\"text-align: justify;\">Retrouvez le sujet de l&#8217;automatisation et bien d&#8217;autres dans la <a href=\"https:\/\/www.auditsi.eu\/?page_id=11012\">formation \u00e0 l\u2019analyse de donn\u00e9es et l\u2019automatisation des t\u00e2ches<\/a><\/p>\n<p style=\"text-align: justify;\">___<\/p>\n<p style=\"text-align: justify;\">Pour approfondir le sujet :&nbsp;<a href=\"https:\/\/www.auditsi.eu\/?tag=automatisation\">Automatisation<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?tag=batch\">Batch DOS<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?cat=215\">VBA<\/a><\/p>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Automatiser%20la%20cr%C3%A9ation%20d%27une%20arborescence%20de%20dossiers%20%C3%A0%20l%27aide%20d%27un%20batch%20DOS\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>La cr\u00e9ation d&#8217;une arborescence de dossiers peut s&#8217;av\u00e9rer fastidieuse mais heureusement cette t\u00e2che est facilement automatisable. Le pr\u00e9sent article s&#8217;attachera \u00e0 pr\u00e9senter une m\u00e9thodologie permettant d&#8217;obtenir une arborescence de dossiers compos\u00e9e syst\u00e9matiquement de la m\u00eame mani\u00e8re. Par exemple, un service comptable souhaite classer ses dossiers de r\u00e9vision par entit\u00e9 juridique puis par cycle de r\u00e9vision. &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=11371\" class=\"more-link\">Continue reading &lsquo;Automatiser la cr\u00e9ation d&#8217;une arborescence de dossiers \u00e0 l&#8217;aide d&#8217;un batch DOS&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Automatiser%20la%20cr%C3%A9ation%20d%27une%20arborescence%20de%20dossiers%20%C3%A0%20l%27aide%20d%27un%20batch%20DOS\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[39,2944],"tags":[2461,815,2460,1965,898,2950,1219,2942,2943,2464,2937,824,2974,2951,2936,222,1133],"class_list":["post-11371","post","type-post","status-publish","format-standard","hentry","category-cas-pratiques","category-script-batch","tag-bat","tag-automatisation","tag-batch","tag-boucle-compteur","tag-console","tag-cycles-de-revision","tag-echo","tag-for-in-do","tag-if-else","tag-md","tag-mkdir","tag-msdos","tag-pause","tag-revision-comptable","tag-script","tag-tests-conditionnels","tag-variable-tableau"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/11371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11371"}],"version-history":[{"count":23,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/11371\/revisions"}],"predecessor-version":[{"id":11582,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/11371\/revisions\/11582"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}