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 :

Script pour trouver un dossier et le renommer


Sujet :

Scripts/Batch

  1. #21
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par 6ratgus Voir le message
    Attention :

    si tu a deux dossier nommé par exemple :
    "bien"
    et
    "bientot"

    ton script renomme les deux dossiers !

    dans le même esprit :
    si un fichier ce nomme comme le dossier que tu doit renommé, il sera renommé !

    à toi de faire les tests !!

    sinon tu a vite compris le codage en powershell.

    Yes ! J'ai remarqué pour le equals et j'ai déjà changé.

    Encore un problème, chaque fois qu'il essayait de changer le nom erreur ou non il mettait dans mes logs

    j'ai changé le code et c'est OK maintenant. J'ai utilisé le $error[0]

    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
    
    $Path = "U:\Powershell\Script_renommer"
    $OldText = "bieo"
    $NewText = "bien" 
    $logFile = 'u:\test.txt'
    
    
    $a = Get-Date
    "Lancement du Script de renommage : " + $a  >> $logfile
    Get-ChildItem $Path -Recurse | %{$_.FullName} |
    Sort-Object -Property Length -Descending |
    % {
        Write-Host $_
        $Item = Get-Item $_
        $PathRoot = $Item.FullName | Split-Path
        $OldName = $Item.FullName | Split-Path -Leaf
        $NewName = $OldName -replace $OldText, $NewText
        $NewPath = $PathRoot | Join-Path -ChildPath $NewName
        
        if ($OldName.Equals($OldText)) {
         Rename-Item -Path $Item.FullName -NewName $NewPath 
             
        if ($error[0]){
             $a = Get-Date
          $erreurInfo  =  "Impossible de modifier " + $item.Fullname  + "    "+ $a
          $erreurInfo >> $logFile
          $error.clear()
        }
       
        }
         }
    
    $a = Get-Date
    "FIN : " + $a   >> $logfile

  2. #22
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    Citation Envoyé par zattzatt Voir le message
    Je ne comprend juste pas à quoi sert le %

    EDIT: % est l'alias de foreach .. mais alors le -process change quoi?
    Ta trouvé pour l'alias
    le process sert ....
    un petit lien pour avoir les explications

    mais en résumé :

    process est le corps d'une fonction constitué en trois partie
    begin process et end
    begin pour "construire"
    process pour l'action principale
    end pour "detruire"

    en objective-c ou en java tu doit avoir un équivalent

    bon week-end

  3. #23
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par 6ratgus Voir le message
    Ta trouvé pour l'alias
    le process sert ....
    un petit lien pour avoir les explications

    mais en résumé :

    process est le corps d'une fonction constitué en trois partie
    begin process et end
    begin pour "construire"
    process pour l'action principale
    end pour "detruire"

    en objective-c ou en java tu doit avoir un équivalent

    bon week-end


    J'ai encore quelques interrogation sur le " %{$_.FullName} " ou ton "Where {$_.PSIsContainer} " mais je verrai ça lundi.. j'ai un peu trop manger du powershell ces jours

    Bon week-end à toi !

  4. #24
    Membre confirmé
    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
    Points : 520
    Points
    520
    Par défaut
    Salut zattzatt

    Citation Envoyé par zattzatt Voir le message
    J'ai encore quelques interrogation sur le " %{$_.FullName} " ou ton "Where {$_.PSIsContainer} " mais je verrai ça lundi.. j'ai un peu trop manger du powershell ces jours

    Bon week-end à toi !
    Pour le " %{$_.FullName} " :
    % = foreach, envoie éléments par élément l'objet depuis le pipeline "|" qui le précède, au le scriptblock qui le suit
    $_ = un élément d'un objet passé par le pipeline
    $_.FullName = propriété "nom complet" de l'élément/objet transmis via le pipeline
    {...} = scriptblock, code executé pour chaque éléments passé dans le pipeline

    dans cette configuration "get-childitem "c:\windwows" | foreach {$_.FullName} " :

    - get-childitem te renvoie la liste des fichiers et dossiers du dossier "c:\windows" avec le nom, extension, nom+chemin, etc... et l'envoie dans le pipeline "|"
    tu peut avoir la liste des éléments de l'objet renvoyé par get-childitem comme ceci : get-childitem | get-member

    - foreach découpe cette liste élément par élément en fonction de l'objet transmis par le pipeline. ici par fichiers et dossiers

    - {$_.FullName} renvoie dans le pipeline suivant unique la propriété fullname de l'élément "$_" recu du pipeline foreach. si il n'y a rien après le scriptblock le pipeline renvoie les données vers l'affichage

    Tu a un tuto sur les pipelines ici

    Pour le "Where {$_.PSIsContainer} " :

    PSIsContainer est une propriété de l'objet "System.IO.FileInfo" ou "System.IO.DirectoryInfo" renvoyé par Get-ChildItem. elle indique si élément courant est un dossier

    je te conseille la lecture de ce tutoriel sur les objets powershell.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/02/2014, 11h35
  2. Script pour trouver des blocs dans un listing
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 06/01/2012, 08h43
  3. Code pour trouver le dossier le plus récent
    Par trblolo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/01/2009, 12h07
  4. Script pour créer un dossier
    Par trihanhcie dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 23/08/2006, 17h14

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