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 :

Liste des fichiers d'une arborescence [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut Liste des fichiers d'une arborescence
    Salut à tous

    J'ai besoin de récupérer, à partir d'un dossier A, la liste des fichiers, uniquement les fichiers, des sous-dossiers cpt1 et cpt2 du dossier A et de tous les sous-dossiers de ces 2 sous-dossiers. Exclus les dossiers vides, exclus les 2 fichiers . et .. de chaque dossier.

    J'aurais besoin du résultat, dans un fichier texte (csv ?) qu'un process va ensuite traiter pour générer un script d'importation des fichiers concernés.
    Il me faudrait le résultat sous la forme, une ligne par fichier, sans autres informations, pas de ruptures par dossier, etc ... :
    Date(sans l'heure) du fichier / séparateur / chemin relatif depuis le dossier A et nom du fichier


    Le dossier A sera certainement sur le réseau, soit une unc, soit un chemin sur un lecteur réseau (pour le moment le lecteur réseau n'est pas encore mappé, je n'ai l'accès que par l'unc).

    Çà va être du OneShot donc avant que je me lance à développer quelque chose en VB, existe-il quelque chose de simple en powershell
    (pour info, j'y connais quasiment rien en powershell)

    J'ai vu qu'il y avait get-ChildItem, mais le format de la sortie ne me convient pas

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    Bon, en continuant de fouiller, j'ai réussi à faire ceci

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Get-ChildItem -Path "\\mon\chemin\reseau" -File -Recurse |
       Select-Object LastAccessTime,FullName |
       Export-Csv C:\temp\test.csv -NoTypeInformation

    Reste à régler le problème de la date qui revient avec l'heure. Mais surtout filtrer sur uniquement les 2 sous-dossiers désirés.

    Puis j'ai le chemin complet au lieu du chemin relatif, mais ça, à la limite je peux le traiter ensuite

  3. #3
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    salut sevyc64

    Reste à régler le problème de la date qui revient avec l'heure. Mais surtout filtrer sur uniquement les 2 sous-dossiers désirés.
    voila pour la moitié de la premiere partie

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Get-ChildItem -Path "\\srv-epo1\c`$\Program Files" -File -Recurse |
       Select-Object @{n="Date";e={$_.LastAccessTime | get-date -Format "dd/MM/yyyy"}}, FullName | 
       Export-Csv C:\temp\test.csv -NoTypeInformation

    pour la deuxieme partie (les deux sous-dossiers seulement)
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Get-ChildItem -Path "\\srv-epo1\c`$\Program Files" -File -Recurse | where {$_.DirectoryName -like "*cpt1*" -and $_.DirectoryName -like "*cpt2*"} |
       Select-Object @{n="Date";e={$_.LastAccessTime | get-date -Format "dd/MM/yyyy"}}, FullName | 
       Export-Csv C:\temp\test.csv -NoTypeInformation

    Puis j'ai le chemin complet au lieu du chemin relatif, mais ça, à la limite je peux le traiter ensuite
    la j'ai pas de solution, désoler

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    pour le dossier j'ai une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $chemin = "\\mon\chemin\reseau"
    Get-ChildItem -Path $chemin -File -Recurse | where {$_.DirectoryName -like "*cpt1*" -and $_.DirectoryName -like "*cpt2*"} |
       Select-Object @{n="Date";e={$_.LastAccessTime | get-date -Format "dd/MM/yyyy"}}, @{n="dossier";e={$_.DirectoryName.replace($chemin,".")}},Name | 
       Export-Csv C:\temp\test.csv -NoTypeInformation

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 247
    Par défaut
    OK, good, je testerais tout cela lundi au boulot.

    pour ce qui est des 2 dossiers, ceux sont 2 dossiers du dossier A, mais il y en a d'autres dans ce dossier, une bonne 100ène. Seuls ces 2 m’intéressent (pour le moment, car si j'arrive à faire ça, je sens que les chefs vont me dire, tu recup le reste aussi).

    Par contre, je ne suis pas à l'abri qu'il existe des dossiers cpt1 ou cpt2 dans arborescence d'un ou plusieurs autres sous-dossiers de A. Je ne les ai pas tous vérifier.

    Au final, je me rends compte que les sous-arborensces ont des structures qui diffèrent un peu, il n'est pas impossible finalement que je traite ces dossiers avec 2 scripts, je verrais.

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Salut,

    Perso pour une question de perf si tu as une grosse quantité de dossiers à la racine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Get-ChildItem -Path $chemin | ? {$_.Name -like "*program*" -or $_.Name -like "*windows*"} | % {$_ |
    Get-ChildItem -File -Recurse | Select-Object @{n="Date";e={$_.LastAccessTime | get-date -Format "dd/MM/yyyy"}}, @{n="dossier";e={$_.DirectoryName.replace($chemin,".")}},Name } |
    Export-Csv C:\temp\test.csv -NoTypeInformation -Encoding UTF8
    Le problème du Get-ChildItem -File -Recurse dès le début c'est qu'il va quand-même parcourir tous les autres dossiers avant de se concentrer sur ceux du Where, de ce que j'ai pu voir.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2014, 14h39
  2. [BATCH]script pour encoder des fichiers dans une arborescence
    Par ashgan44 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 11/05/2009, 15h04
  3. Réponses: 1
    Dernier message: 09/12/2008, 12h23
  4. [batch file] detruire des fichiers dans une arborescence
    Par Biosox dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 03/06/2008, 10h10
  5. Réponses: 10
    Dernier message: 23/04/2007, 22h59

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