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

Scripts/Batch Discussion :

Sélection d'un répertoire et copie de fichier à partir de CSV [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Par défaut Sélection d'un répertoire et copie de fichier à partir de CSV
    Bonjour,

    Nouveau défi qui met à mal mon cerveau
    le dernier script que j'ai fait avec votre aide fonctionne bien. Toutefois si on copie plusieurs sous répertoires d'un répertoire les fichiers présent dans le répertoire ne sont pas copiés. On me demande de faire un script qui vérifie dans la feuille CSV la présence répété d'un répertoire au niveau -1, et si c'est vrai copier que les fichiers présent dans ce répertoire.
    encore une fois j'arrive a le faire en direct mais cela ne fonctionne pas dès que je travaille avec le CSV et les variables
    EX dans mon fichier CSV :
    SOURCE
    D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT\basic report diag
    D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT\basic reports result
    D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT\test
    D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT\prod

    DESTINATION
    P:\\NV-Organisation Serveurs\FINAL\00\09_FAT
    P:\\NV-Organisation Serveurs\FINAL\00\09_FAT
    P:\\NV-Organisation Serveurs\FINAL\00\09_FAT
    P:\\NV-Organisation Serveurs\FINAL\00\09_FAT

    Dans ce cas précis je copie des sous répertoires, mais les fichiers présents au niveau de 08-FAT eux ne sont pas copiés.

    Comment faire pour qu'un script le fasse?

    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    les fichiers présents au niveau de 08-FAT eux ne sont pas copiés.

    Comment faire pour qu'un script le fasse?
    Si tu met ceci dans ton csv ça devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SOURCE
    D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT
    
    DESTINATION
    P:\\NV-Organisation Serveurs\FINAL\00\09_FAT

    encore une fois j'arrive a le faire en direct mais cela ne fonctionne pas dès que je travaille avec le CSV et les variables
    Il est ou ton code "direct" qui fonctionne ?

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Par défaut
    Bonjour Ericlm128

    Merci de ta réponse, tu as raison le plus simple aurai été de modifier le CSV, mais on ne peux pas.

    Voici l'ébauche de script "direct" :
    Code PowerShell : 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
     
    #code page d'affichage console
    chcp 1252
    Clear-Host
    # reste a faire la boucle de test de repertoire -1 > si plusieurs occurences du repertoire -1 alors on remonte d'un cran et on copie les fichiers présents dans le repertoire vers la cible 
    # voir comment faire fonctionner ce script avec la feuille CSV d'origine avec source et destination
     
     
    $src = "D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT\basic report diag"
    $dst = "P:\\NV-Organisation Serveurs\FINAL\00\09_FAT"
     
    #on se positionne à la source
    Set-Location $src
    #on remonte d'un repertoire, on ne selectionne que les fichiers, et on axporte vers un CSV
    $srccp = Get-ChildItem .. -File | Select-Object FullName|  Export-Csv -path "C:\Users\Documents\scripts\script de copie de fichiers 1er niveau\csv test\test01.csv" -NoTypeInformation -Delimiter ";" -Encoding Default -force
    #importation du csv
    $cp = Import-csv "C:\Users\Documents\scripts\script de copie de fichiers 1er niveau\csv test\test01.csv" | ForEach-Object {
    #copie des fichiers vers la destination
    Copy-Item -Path $_.fullname -Destination $dst -PassThru
     
    }
     
    Remove-item "C:\Users\Documents\scripts\script de copie de fichiers 1er niveau\csv test\test01.csv"
    pause
    Sachant que $src est un ligne SOURCE extraite de la feuille CSV, $dst est la destination extraite du CSV
    Je bloque encore sur la boucle de test => si plusieurs occurrences du niveau -1 alors on le sélectionne, on regarde si il y a des fichiers dedans, si oui on les copie vers la destination précisée dans le CSV

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je bloque encore sur la boucle de test
    Utilisons la POO !! C'est comme même la force de PowerShell.

    Un exemple simple :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $src = "D:\ENG\DIAG\NUMER\123_LOG\123_Etudes\Organisation Serveurs\08-FAT\basic report diag"
     
    foreach ($FileFullName in (Get-Item -LiteralPath $src).Parent.GetFiles().FullName)
    {
        $FileFullName
    }

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Par défaut
    Bonjour Ericlm128

    C'est un peut compliqué pour moi pour comprendre les boucles Powershell. Je lit je fais des test, mais j'ai du mal a transposer dans le cas qui me concerne.
    Merci pour ton exemple, je le test actuellement , j'ai réussi a le faire fonctionner, il ne me reste plus qu'a faire la boucle de test => si plusieurs occurrences du dossier -1 alors copier les fichiers dedans.

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Par défaut
    Bonjour,

    nous avons rajouté une colonne groupes dans le csv. Cette colonne numérote les lignes du csv par chemin .

    Je dois faire faire au script le déroulé suivant:
    1 : sélectionner les lignes marquées 1 dans la colonne groupes , afficher le chemin
    2 : comparer les chemin et m’arrêter au niveau où ils sont identique
    3 : copier les fichiers de la source sélectionnés en amont
    4: faire la même chose avec les lignes marquées 2.3.4.5.6. etc....

    j'ai besoin d'aide pour le point 1 et 2, je n'arrive pas a trouver le bon code pour faire cela.

    Merci de votre aide

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

Discussions similaires

  1. Copie de fichier à partir d'une liste
    Par curt dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/07/2008, 14h00
  2. copie de fichier à partir d'une clé usb
    Par aklabig dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 24/09/2007, 14h58
  3. copie de fichier à partir d'une url
    Par Gibbon dans le forum C#
    Réponses: 4
    Dernier message: 06/02/2007, 14h13
  4. Copie de fichiers et de répertoires
    Par koKoTis dans le forum C++
    Réponses: 7
    Dernier message: 29/12/2006, 22h48
  5. Copie de fichiers d'un répertoire à un autre
    Par fleur_de_rose dans le forum MFC
    Réponses: 4
    Dernier message: 01/03/2006, 11h59

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