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 :

suppression de document dans dossier au nom aléatoire


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut suppression de document dans dossier au nom aléatoire
    Bonjour,

    J'essaie de réaliser un script qui supprime automatiquement des fichiers dans des sous dossiers au nom aléatoire.
    Par exemple, j'ai dans ce dossier: C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files 6 sous dossiers dont le nom est généré par le logiciel, je souhaite dans chaque sous dossier supprimer tout le contenu sauf le contenu d'un sous-sous-dossier.
    Je coince un peu... Voici ce que j'ai écris (c'est mon premier donc un peu d’indulgence )

    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
    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
    51
    52
    53
    54
    55
    $username=[Environment]::UserName;
    $folder="C:\Users\"+$username+"\AppData\Roaming\Pyramiq\DLex\Files";
    $i=0; 
    foreach ($element in $(gci $folder))   ---------- Compte le nombre de sous répertoire
    {
        if ($element.PsIsContainer -eq $true) 
        {
            $i++
        }
    }; 
    echo $i; ---------- affiche le nombre de sous repertoire trouvé (dans mon cas 6)
    if ($i=1) ---------- je déclare un tableau listname qui va contenir le nom de chaque sous repertoire. Bizarrement si je me contente de $listname=@() ça ne fonctionne pas.
    {
    $listname=@("");
    }
    if ($i=2)
    {
    $listname=@("","");
    }
    if ($i=3)
    {
    $listname=@("","","");
    }
    if ($i=4)
    {
    $listname=@("","","","");
    }
    if ($i=5)
    {
    $listname=@("","","","","");
    }
    if ($i=6)
    {
    $listname=@("","","","","","");
    }
    $j=1;
    foreach($file in $folder) ---------- j’extrais le nom de chaque sous-répertoire
    {
        $listname[$j]=Get-ChildItem -path $file | Select-Object Name; 
        echo $listname[$j]; ---------- j’affiche le nom de chaque sous répertoire (par curiosité)
        $j=$j+1;
    }
    $j=1;
    Do
    {
        echo $folder$listname[$j]"\RECUP\*.*"; ---------- c’est là que ça coince… il ne me construit pas le chemin correctement
        $j++;
        #del $folder$listname[$j]"\*.*" ---------- à terme, à la place d’afficher, je voudrais supprimer
        #del $folder$listname[$j]"\EDITED\*.*"
        #del $folder$listname[$j]"\READ\*.*"
        #del $folder$listname[$j]"\RECUP\*.*"
        #del $folder$listname[$j]"\TRANSFER\*.*"
     
    }
    Until($j -eq $i+1)

    Voici ce que ça me retourne. Ça extrait bien le nom de chaque sous-dossier, mais si j'essaie de les incorporer, ça foire complètement. Surement une mauvaise utilisation ou déclaration de variable...

    Name
    ----
    169DLEX_SD
    170DLEX_SD
    73DLEX_SD
    ILDLEX_SD
    JPMDLEX_SD
    SSTDLEX_SD
    C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files System.Object[] [1]\RECUP\*.*
    C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files System.Object[] [2]\RECUP\*.*
    C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files System.Object[] [3]\RECUP\*.*
    C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files System.Object[] [4]\RECUP\*.*
    C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files System.Object[] [5]\RECUP\*.*
    C:\Users\jop21\AppData\Roaming\Pyramiq\DLex\Files System.Object[] [6]\RECUP\*.*
    Vous pouvez m'aider?

    Merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut
    J'ai réfléchi un peu et j'ai simplifié.
    ça marche maintenant.
    La solution pour ceux que ça interresse:
    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
    $username=[Environment]::UserName;
    $folder="C:\Users\"+$username+"\AppData\Roaming\Pyramiq\DLex\Files";
    $folder= Get-ChildItem -Path $folder
    $listname="test";
    $j=1;
    foreach ($MySubFolder in $folder)
    {
    	$listname="$($MySubFolder.FullName)" 
        #echo $listname
        #echo $listname"\RECUP\*.*";
        del $listname\*.*;
        del $listname\EDITED\*.*;
        del $listname\READ\*.*;
        del $listname\RECUP\*.*;
        del $listname\TRANSFER\*.*
    }

  3. #3
    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
    On peut encore beaucoup simplifier.

    Voici comment j'aurai fait

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $AppData = $env:APPDATA
    Get-ChildItem -Path $($AppData + "\Pyramiq\DLex\Files\*.*"), $($AppData + "\Pyramiq\DLex\Files\*\*.*"), $($AppData + "\Pyramiq\DLex\Files\*\EDITED\*.*"), $($AppData + "\Pyramiq\DLex\Files\*\READ\*.*"), $($AppData + "\Pyramiq\DLex\Files\*\RECUP\*.*"), $($AppData + "\Pyramiq\DLex\Files\*\TRANSFER\*.*") | Where-Object {!$_.PSIsContainer} | Remove-Item -Force

    Conseil :
    Respecte une indentation cohérente
    Le ; de fin de ligne n'est pas nécessaire
    N'utilise pas d'alias tel que del, echo
    Utilise les paramètre nommé plus que les paramètre de position supposé. Get-ChildItem -Path "c:\toto" plutot que Get-ChildItem "c:\toto"
    Essaie d'utiliser la logique objet avec les pipes objets |
    Toujours allez au plus simple
    Lire la documentation officielle des cmdlet utilisées, exemple : https://docs.microsoft.com/en-us/pow...w=powershell-7

    Si tu pose du code sur ce site essaie de la balisé CODE=powershell

  4. #4
    Candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Par défaut
    Ouf, oui je vois.
    C'était mon premier script. Je suis encore à l'air du batch.
    Je me documenterai là dessus!

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

Discussions similaires

  1. [Batch] Suppression d'espaces dans des noms de dossiers par batch
    Par rodolphelami dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 10/07/2019, 17h30
  2. Réponses: 5
    Dernier message: 19/02/2008, 08h53
  3. Comprimez les images des document inclus dans dossier
    Par Fredheg dans le forum VBA Word
    Réponses: 41
    Dernier message: 26/12/2007, 12h39
  4. Réponses: 2
    Dernier message: 20/12/2006, 10h51
  5. suppression des espaces dans les noms de fichiers
    Par menuge dans le forum Général Python
    Réponses: 8
    Dernier message: 22/10/2006, 12h01

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