1 votes

Comment créer plusieurs dossiers avec un fichier batch ?

J'ai besoin de créer un dossier (appelé "visitor") dans chaque dossier d'un dossier principal. Par exemple, ma structure est la suivante :

\idontknowthename1\
\idontknowthename2\
\idontknowthename3\
\idontknowthename4\
\idontknowthename5\

J'ai besoin de ceci :

\idontknowthename1\visitor
\idontknowthename2\visitor
\idontknowthename3\visitor
\idontknowthename4\visitor
\idontknowthename5\visitor

Bien sûr, il y a quelques problèmes :

  1. Je ne connais pas le nombre total de dossiers dans le dossier racine
  2. Je ne connais pas le vrai nom de chaque dossier
  3. Je ne peux pas utiliser de logiciel ou installer quoi que ce soit en plus de ce qui est inclus avec Windows XP (c'est pour un serveur web en staging et production)

Je pensais faire cela avec un fichier batch (en utilisant for), mais je n'arrive pas à obtenir les noms des dossiers sans analyser un fichier. Des idées ?

2voto

Patrick Seymour Points 8162

Cela semble fonctionner avec les noms de dossier contenant des espaces.

@echo off

set root_folder=%USERPROFILE%\Desktop\test

for /f "tokens=*" %%a in ('dir "%root_folder%" /ad /b') do @if not exist "%%~fa\visitor" md "%%~fa\visitor"

set root_folder=

Vous pouvez également créer des dossiers visiteurs dans les sous-dossiers en ajoutant /s à la commande DIR, c'est-à-dire dir "%root_folder%" /ad /b /s. Cela ne semble pas poser de problème avec la récursivité.

1voto

James Mertz Points 390

Énumérer tous les dossiers dans un fichier :

dir /ad /b /s > dirlist.txt

Pour chaque répertoire, exécuter mkdir :

for /f "tokens=*" %%a in (dirlist.txt) do mkdir "%%~a\visitor"

Supprimer le fichier temporaire :

del dirlist.txt

(Il est possible d'utiliser dir... directement à l'intérieur de la boucle for, mais il y a un risque de récursion infinie.)

0voto

afrazier Points 22479

for a un paramètre /d qui listera les répertoires au lieu des fichiers.

for /d %%i in (C:\Chemin\Vers\Le\Répertoire\*) do @md "%%i\visiteur" devrait faire l'affaire

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X