IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

copier donnee avec recuperation du nom du sous repertoire


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut condition recuperai nom de dossier pr plusieur operation
    bonjour

    j'ai plusieur probleme mon 1er : http://www.developpez.net/forums/sho...d.php?t=435461

    Mon deuxiéme probleme: (plus complique)
    j'ai un dossier Operation qui contien plusieur dossier et sous dossier
    pour chaque operation nous avons les même sous dossier dans l'arborésence c'est que le nom de l'operation qui change exemple :
    LEPARC\ADMINISTRATIFS\COMMERCIALISATION\LANCEMENT
    LARC\ADMINISTRATIFS\COMMERCIALISATION\LANCEMENT
    ......

    je souhaite réalisé un copier de certain sous dossier dans un dossier que l'on créra (le nom de operation LEPARC ou LARC...) ou dedans on métra tout les dossier copier qui appartienne a chaque opération.
    exemple
    pour LEPARC on aura comme sous dossier DAV et PLAQUETTE avec tout les ficher qui contienne
    Idem pour LARC mais avec les fichier de l'opération.

    j'ai créé un Script qui marche mais que pour une opération je ne sais pas comment crée la boucle ( pour chaque operation faire sa..) et qu'il me prenne le nom du dossier de l'opération pour chaque création de dossier

    voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    'création du =dossier de sauvegarde
     Dim racine
     Dim MonRep1
     Dim MonRep2
     Dim MonRep3
     Dim MonRep4
     
    racine = "C:\a\Operation\"
     
     
    Set FSO = CreateObject("Scripting.FileSystemObject") 
     
     
    Set racine1 = fso.CreateFolder(racine & "\NONOPERATION\")
     
    Set MonRep1 = fso.CreateFolder(racine1 & "\DAV")
    Set MonRep2 = fso.CreateFolder(racine1 & "\PLAN DE VENTE")
    Set MonRep3 = fso.CreateFolder(racine1 & "\PLAQUETTE")
    Set MonRep4 = fso.CreateFolder(racine1 & "\NOTICES")
     
     
    'copier du contenue du dossier dans un autre
     
    Const OverWriteFiles = TRUE 
     
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    objFSO.CopyFolder "C:\a\a\LEPARC" & "\DAV", racine1 & "\DAV" , OverWriteFiles
    objFSO.CopyFolder "C:\a\LEPARC" & "\PLAN DE VENTE", racine1 & "\PLAN DE VENTE" , OverWriteFiles
    objFSO.CopyFolder "C:\a\LEPARC" & "\PLAQUETTE", racine1 & "\PLAQUETTE" , OverWriteFiles
    objFSO.CopyFolder "C:\a\LEPARC" & "\NOTICES", racine1 & "\NOTICES" , OverWriteFiles
    qui peux m'aide?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut recuperai le nom d'un dossier
    j'ai un dossier que l'on appel "A" dans ce dossier on a plusieur sous dossier pour mon exemple on va dire 2 "LEPARC" et "FLEUR".

    j'aimerai savoir comment faire pour "racine1" prenne la valeur C:\a\Operation\LEPARC puis apres C:\a\Operation\FLEUR....

    qui peux m'aide?? vous comprennai??

    racine = "C:\a\Operation\"

    Set racine1 = fso.CreateFolder(racine & "\NONOPERATION\")

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    une boucle sur la collection subfolders ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder("C:\a\Operation\")
    For Each oSousRep in oFolder.subfolders
        wscript.echo oSousRep.path
    next

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    j'ai essai mais je veux pas l'avoir le nom a l'écran mais qui rentre en compte pour la création de nouveau dossier

    regarde ce que j'ai fait , tu en pence quoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder("C:\a\a\Operation\")
    For Each oSousRep in oFolder.subfolders
        wscript.echo oSousRep.path
     
    'création du =dossier de sauvegarde
     Dim racine
     Dim MonRep1
     Dim MonRep2
     Dim MonRep3
     Dim MonRep4
     
    racine = "C:\a\Operation\"
     
    Set racine1 = fso.CreateFolder(racine & "NON du sous rep")
     
    Set MonRep1 = fso.CreateFolder(racine1 & "\DAV")
    Set MonRep2 = fso.CreateFolder(racine1 & "\PLAN DE VENTE")
    Set MonRep3 = fso.CreateFolder(racine1 & "\PLAQUETTE")
    Set MonRep4 = fso.CreateFolder(racine1 & "\NOTICES")
     
    next

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    l'affichage à l'écran est effectué par la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    wscript.echo oSousRep.path
    supprime cette ligne...



    déplace tes déclarations de variables tout en haut de ton code ( c'est plus "propre..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Dim racine1 
     Dim MonRep1
     Dim MonRep2
    ...
    supprime la variable "racine" et sont affectation ( set racine...) devenu inutile...

    remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set racine1 = fso.CreateFolder(racine & "NON du sous rep")
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine1 = oSousRep.path

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    ok sa avance mais c pas encore sa lol presque...

    je veux prendre le nom des sous repertoire qui sont dans C:\a\a\Operation\ pour crée un nouveau dossier avec le nom des sous repertoire mais la dans un dossier C:\a\Operation\

    donc j'en suis la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     Dim MonRep1
     Dim MonRep2
     Dim MonRep3
     Dim MonRep4
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder("C:\a\a\Operation\")
    For Each oSousRep in oFolder.subfolders
     
     
    racine1 = "C:\a\Operation\" & "non du sous repertoire que l'on a trouve plus haut"
     
    Set MonRep1 = fso.CreateFolder(racine1 & "\DAV")
    Set MonRep2 = fso.CreateFolder(racine1 & "\PLAN DE VENTE")
    Set MonRep3 = fso.CreateFolder(racine1 & "\PLAQUETTE")
    Set MonRep4 = fso.CreateFolder(racine1 & "\NOTICES")
     
     
     
    next
    quand on a rélise cette création de dossier on recommence tout pour prendre la valeur du deuxiéme sous repertoire qui est dans C:\a\a\Operation\


    tu comprend??

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut copier donnee avec recuperation du nom du sous repertoire
    je souhaite copier des donnée d'un dossier LEPARC dans un autre dossier qui ce trouve ailleur mais en reprenant le nom de ce repertoire
    j'ai reusie dans mon code a crée le dossier (vide) avec le nom de chaque operation (LEPARC......) et leur sous repertoire (DAV, PLAN DE VENTE...) Donc il me reste juste a réalisé la copier du dossier d'origine vers le nouveau dossier crée j'ai essai ce code mais sa marche pas qui peux m'aide??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder("C:\a\a\Operation\")
    For Each oSousRep in oFolder.subfolders
     
    Const OverWriteFiles = TRUE 
    origine = oFolder & oSousRep.name
    racine1 = "C:\a\Operation\" & oSousRep.name
     
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    objFSO.CopyFolder origine & "\DAV", racine1 & "\DAV" , OverWriteFiles
    objFSO.CopyFolder origine & "\PLAN DE VENTE", racine1 & "\PLAN DE VENTE" , OverWriteFiles
    objFSO.CopyFolder origine & "\PLAQUETTE", racine1 & "\PLAQUETTE" , OverWriteFiles
    objFSO.CopyFolder origine & "\NOTICES", racine1 & "\NOTICES" , OverWriteFiles
    next

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    c'est quoi qui "marche pas ..." ...?

    bon ce qui me saute au yeux.... :

    un seul objet FileSystem... te suffit supprime la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    et remplace les objFSO.... par FSO.
    (ce serai plus "joli" si tu renommai ensuite tout tes FSO par oFSO par exemple...)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set oFolder = fso.GetFolder("C:\a\a\Operation\")
    cette ligne te permet d'affecter un objet folder à ta variable.. oFolder..(voir aide VBSCript pour l'objet Folder ) ..
    ensuite tu effectue une opération de concaténation de chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    origine = oFolder & oSousRep.name
    et tu sur que la propriété par défaut de ton oFolder et bien celle que tu veux utiliser ...? précise la plutôt ... en mettant oFolder.Name ( où autre .... je pense pas que cela soit la propriété désirée..)

    vérifie ensuite si tu donne bien les bons paramétres à ta fonction de copy en les affichant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WScript.Echo "Copie de  : " &  origine & "\DAV"  &"  Vers " &  racine1 & "\DAV"



  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Par défaut
    j'ai reusi sa marche regarde mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    origine = "C:\a\a\Operation\"
    destination = "C:\a\Operation\"
     
     
    'del dossier sauvegarde
    Dim oFSO,oFld
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFld = oFSO.GetFolder(destination)
    'Parcours et efface tous les sous répertoires
    For Each oSubFld in oFld.SubFolders
      oSubFld.Delete false
    Next
    'Parcours et efface tous les fichiers directement sous le répertoire
    For Each oFile in oFld.Files
      oFile.Delete False
    Next
     
    '-------------------------- création des dossier vide destination 
     
     Dim MonRep1
     Dim MonRep2
     Dim MonRep3
     Dim MonRep4
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder(origine)
    For Each oSousRep in oFolder.subfolders
     
    Set racine1 = fso.CreateFolder(destination & oSousRep.name)
    Set MonRep1 = fso.CreateFolder(racine1 & "\DAV")
    Set MonRep2 = fso.CreateFolder(racine1 & "\PLAN DE VENTE")
    Set MonRep3 = fso.CreateFolder(racine1 & "\PLAQUETTE")
    Set MonRep4 = fso.CreateFolder(racine1 & "\NOTICES")
    next
     
    '-------------------------- copier d'origine vers destination
     
    Set aoFSO = CreateObject("Scripting.FileSystemObject")
    Set aoFolder = aofso.GetFolder(origine)
    For Each aoSousRep in aoFolder.subfolders
     
    origine2 = origine & aoSousRep.name
    destination2 = destination & aoSousRep.name
     
    dim aoFSO
    aoFSO.CopyFolder origine2 & "\DAV", destination2 & "\DAV" 
    aoFSO.CopyFolder origine2 & "\PLAN DE VENTE", destination2 & "\PLAN DE VENTE"
    aoFSO.CopyFolder origine2 & "\PLAQUETTE", destination2 & "\PLAQUETTE"
    aoFSO.CopyFolder origine2 & "\NOTICES", destination2 & "\NOTICES"
    next
    par contre une derniere question mais je ne sais pas ci cela est possible
    je souhaite que les dossier et les données qui sont dans 'destination" son pour l'utilisateur (ces donnée seront sur un serveur) les fichier doivent etre en ouverture (utilisateur peux ouvir par exemple un fichier pdf et l'imprimer) il ne peux pas le copier ni le supprimer ou le modifier
    aurai tu une idée??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/01/2013, 14h23
  2. Recuperer les noms des sous-dossiers et des fichiers
    Par elkhansa dans le forum VBScript
    Réponses: 4
    Dernier message: 21/11/2012, 14h02
  3. copier donnees avec changement de feuilles
    Par dalo02 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/11/2011, 18h49
  4. Réponses: 2
    Dernier message: 06/05/2010, 14h56
  5. Réponses: 0
    Dernier message: 11/03/2010, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo