Créations sous-répertoires multiples

Gawouelle -  
 Gawouelle -
Bonjour,

A la racine de mon disque p: j'ai environ 500 dossiers, dans chacun des dossiers se trouve 1 sous dossier nommé DIVERS et plusieurs sous dossiers ayant des noms différents (nom d'entreprise).

J'ai besoin de créer 2 dossiers, nommés TOTO et LULU par exemple, dans chacun des sous dossiers portant le nom d'entreprise, sauf dans le sous dossier divers

en gros il me faut : p:\nom_dossier\nom_rep\TOTO
et p:\nom_dossier\nom_rep\LULU MAIS PAS p:\nom_dossier\DIVERS\


J'ai une partie du script mais le problème c'est que les sous-répertoire ne sont pas créés au bon emplacement, ils se créent dans l'arborescence au même niveau que DIVERS !!!!

@echo off
for /d %%d in (*) do ( mkdir "%%d\TOTO"
)
pause
@echo off
for /d %%d in (*) do ( mkdir "%%d\LULU"
)
pause

Je sais pas comment faire ni même si cela est possible comme les dossiers principaux ont tous des noms différents et les sous répertoires aussi.
Si quelq'un peut m'aider ça m'éviterai de tout faire manuellement pour les 500 dossiers !!! =)
Merci
A voir également:

7 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Je partirais plutôt sur deux boucles imbriquées pour ma part :
@echo off
for /d %%d in (*) do (
    for /d %%s in (%%d\*) do (
        mkdir "%%s\LULU"
        mkdir "%%s\TOTO"
    )
)
pause 


Xavier
1
radgeur Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   27
 
ah oui tien tres bonne idée, je n'y avais pas penser, mais ca a de grandes chances de fonctionner.
0
Gawouelle
 
Merci bcp, tout fonctionne =)
0
Gawouelle
 
en fait j'ai un petit soucis, mes 500 répertoires principaux ont des noms qui contiennent des espaces, tiret... et du coup ça bug avec le script, ça me cré 500 répertoires supplémentaires dans lesquels les répertoires lulu et toto sont créés !!! :S
0
radgeur Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   27
 
il faut entourer les adresses de " "
0
Gawouelle
 
j'ai pourtant mis les " " autour de chaque chemin
0
radgeur Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   27
 
Bonjour,
Je comprend pourquoi mais malheureusement je ne posséde pas de solutions pour le moment a ton problème.
0
Gawouelle
 
tan pis, merci quand même !!
0
radgeur Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   27
 
ton code m'as l'air fortement complexe
à la rigueur je ne sait pas si cela est possible mais tu pourrais peut-être del les sous-dossier divers dans chaque dossier (je ne sais pas si il y a quelquechose dedans, ou alors les bouger peut-être sinon, et après, tu répertorie effectivement les chemins des nom de dossier entreprise pour créer les documents que tu veut dedans, et après redéplacer les dossiers divers si tu as besoin.
Je sais que ca a l'air farfelue mais je ne m'y connais pas assez en MS-DOS pour te donner d'autres solutions, par contre si tu ne le sais pas je peut te dire, qu'il est inutile de faire 2 boucles pour créer 2 fichiers dans le même dossier, écrire les actions l'une à la suite de l'autre est suffisant et si tu tien à la pause, tu la met dans la boucle juste après tes deux actions.

Voila j'espère que cela t'aideras un peu quand même.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
essayer
@echo off 
for /f %%d in ('dir /a:d /b ^| find /v "DIVERS" ') do (
  mkdir "%%d\TOTO" 
  mkdir "%%d\LULU" 
) 
pause 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
Bonjour Gawouelle,


Avec Python, on peut atteindre ce que l'on veut comme résultat d'un traitement de fichiers ou de dossiers, quelle que soit la complexité voulue pour ce résultat et la complexité des noms et de l'arborescence initiaux.
Python est très bon pour de telles taches.
Je peux t'aider à réaliser ce que tu veux faire si tu consens à utiliser Python.
Si c'est le cas tu peux commencer de regarder cette réponse :

https://forums.commentcamarche.net/forum/affich-23118470-script-pour-deplacer-les-fichiers#7

qui te donneras aussi une idée de l'aisance que procure Python pour atteindre ses objectifs.
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
je disais, dans un post qu'on vient de me censurer:

j'aimerais savoir pourquoi mon post ci-dessus a été downvoté
mais que je craignais que le/la lâche feignant(e) qui l'a fait ne viendra pas me répondre
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Va savoir... des fois il se passe des trucs bizarres dans les notes :-/
Allez, j'te mets +1 parce que même si c'est un peu hors sujet, python est effectivement adapté au problème, et surtout est beaucoup plus facilement débugable que du batch, cf les problèmes bizarres d'espaces qu'on a...
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
Merci Reivax962.
Bien que, tu t'en doutes, ce ne soit pas le fait d'avoir un -1 qui m'énerve. C'est de voir qu'il y a un !:**%#!§ qui a downvoté pour une raison tordue. Soit contre moi, soit contre Python. Sans aucune explication, c'est niais et lamentable


Pourquoi "hors sujet" ? Si c'est adapté, ce n'est pas hors-sujet.

Soit dit en passant , aucun problème de caractère à débugger en écrivant ce code.
J'ai essayé sur des dossier nommés 'bu du du' et 'oro-oro' , pour créer 'TU - TU' et 'TO _ T ! O' : passé impeccable
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
> Pourquoi "hors sujet" ? Si c'est adapté, ce n'est pas hors-sujet

Tu as raison, j'étais tellement parti « batch » que je pensais que la demande initiale réclamait du batch... Or à la relecture, ce n'est pas le cas :)
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
Voilà, j'ai mis 1/4 d'heure pour pondre le code en Python.
A priori , il est portable sur n'importe quelle plateforme


from os import listdir,mkdir 
from os.path import isdir,islink,join 


def dossiers_dans(dirpath): 
    return (join(dirpath,x) for x in listdir(dirpath) if isdir(join(dirpath,x)) and not islink(join(dirpath,x)) ) 

ecr = [] 
for dossier in dossiers_dans('pp:'): 
    ecr.append('  '+dossier+'\n') 
    for sous_dossier in dossiers_dans(dossier): 
        ecr.append(sous_dossier) 
        if not sous_dossier.endswith('DIVERS'): 
            ecr.append('creating LULU et TOTO dans ' + sous_dossier + '\n') 
            mkdir(join(sous_dossier,'LULU')) 
            mkdir(join(sous_dossier,'TOTO')) 
    ecr.append('\n-------------------------------------\n') 


print '\n'.join(ecr)


La fonction dossier_dans() renvoie un générateur
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
d'où télécharges-tu python pour Windows ?
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
évidemment ...merci
0