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 avec code retour à la fin


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Script avec code retour à la fin
    Bonjour,

    J'ai un script de purge, qui fonctionne correctement.
    Mais j'ai besoin d'ajouter à la fin un code retour 1 ou 2.
    Exemple : code retour 1, le script purge est bien fini sans erreur et code retour 2, script purge en erreur

    Mon script :
    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
    function New-FileNameTimeStamped{
     param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')
     
      $SF=New-object System.IO.FileInfo $FileName 
      "{0}\{1}-{2:$Format}{3}" -F $SF.Directory,$SF.BaseName,$Date,$SF.Extension
    }#New-FileNameTimeStamped
     
    #variable pour le fichier log avec la date grace a la fonction
    $LOG=New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'
     
     
    $Folder = "C:\Purge"
    #supprimer les fichiers plus anciens que 30 jours
    Get-ChildItem $Folder -Recurse -Force -ea 0 |
    ? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} |
    ForEach-Object {
        $_ | del -Force
        $_.FullName | Out-File $LOG -Append
    }

    Je voir pas comment faire, je début sur powershell

    Merci d'avance de votre aide
    Birel

  2. #2
    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

    normalement on utilise exit suivit du code,
    mais des fois il peut etre plus pratique d'utilisé return à la place pour ne pas fermé de la console ou l'editeur ISE en fin de script
    le resultat est le même normalement

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Il est possible de faire :

    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
    function New-FileNameTimeStamped{
     param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')
    
      $SF=New-object System.IO.FileInfo $FileName 
      "{0}\{1}-{2:$Format}{3}" -F $SF.Directory,$SF.BaseName,$Date,$SF.Extension
    }#New-FileNameTimeStamped
    
    #variable pour le fichier log avec la date grace a la fonction
    $LOG=New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'
    
    
    $Folder = "C:\Purge"
    #supprimer les fichiers plus anciens que 30 jours
    Get-ChildItem $Folder -Recurse -Force -ea 0 |
    ? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} |
    ForEach-Object {
        $_ | del -Force
        $_.FullName | Out-File $LOG -Append
    }
    
    Write-Host "purge ok"
    exit 1
    
    Write-Host "purge Nok"
    exit 2

    ?

  4. #4
    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
    il faut utilisé try/catch pour detecté l'erreur !!

    tu aurra donc quelque chose comme ça :
    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
    function New-FileNameTimeStamped {
        param($FileName, $Date = (Get-Date), $Format = 'dd-MM-yyyy-HH-mm-ss')
     
        $SF = New-object System.IO.FileInfo $FileName 
        "{0}\{1}-{2:$Format}{3}" -F $SF.Directory, $SF.BaseName, $Date, $SF.Extension
    } # New-FileNameTimeStamped
     
    # variable pour le fichier log avec la date grace a la fonction
    $LOG = New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'
     
     
    $Folder = "C:\Purge"
    # supprimer les fichiers plus anciens que 30 jours
    try {
        Get-ChildItem $Folder -Recurse -Force -ErrorAction stop | 
        where {-not $_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} | 
        ForEach-Object {
            $_ | Remove-Item -Force -ErrorAction stop
            $_.FullName | Out-File $LOG -Append
            exit 0
        }
    }
    catch {
        exit 1
    }

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci pour ton retour,

    Le script ne fonctionne pas :/,
    Il purge pas et pas de résultat a la fin.

  6. #6
    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
    Le script ne fonctionne pas :/,
    Il purge pas
    normal en fait il fonctionne mais n'efface qu'un seul fichier il faut deplacer le exit 0. voir script si dessous
    et pas de résultat a la fin.
    pas de resultat ???? tu ne demande pas a ton script d'afficher quelque chose !! les seuls infos dispo sont dans le fichier log

    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
    function New-FileNameTimeStamped {
        param($FileName, $Date = (Get-Date), $Format = 'dd-MM-yyyy-HH-mm-ss')
     
        $SF = New-object System.IO.FileInfo $FileName 
        "{0}\{1}-{2:$Format}{3}" -F $SF.Directory, $SF.BaseName, $Date, $SF.Extension
    } # New-FileNameTimeStamped
     
    # variable pour le fichier log avec la date grace a la fonction
    $LOG = New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'
     
     
    $Folder = "C:\Purge"
    # supprimer les fichiers plus anciens que 30 jours
    try {
        Get-ChildItem $Folder -Recurse -Force -ErrorAction stop | 
        where {-not $_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} | 
        ForEach-Object {
            $_ | Remove-Item -Force -ErrorAction stop
            $_.FullName | Out-File $LOG -Append
        }
        exit 0
    }
    catch {
        exit 1
    }

  7. #7
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci de ton retour
    Je viens de faire des modifications de mon script, il est correcte niveau message ?
    Il est possible de faire une suppression des dossiers et fichiers ?
    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
    function New-FileNameTimeStamped {
        param($FileName, $Date = (Get-Date), $Format = 'dd-MM-yyyy-HH-mm-ss')
     
        $SF = New-object System.IO.FileInfo $FileName 
        "{0}\{1}-{2:$Format}{3}" -F $SF.Directory, $SF.BaseName, $Date, $SF.Extension
    } # New-FileNameTimeStamped
     
    # variable pour le fichier log avec la date grace a la fonction
    $LOG = New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'
     
     
    $Folder = "C:\Purge"
    # supprimer les fichiers plus anciens que 30 jours
    try {
        Get-ChildItem $Folder -Recurse -Force -ErrorAction stop | 
        where {-not $_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} | 
        ForEach-Object {
            $_ | Remove-Item -Force -ErrorAction stop
            $_.FullName | Out-File $LOG -Append
        }
        Write-Warning "purge des dossiers ok"
        echo "purge fini"
        exit 0
    }
    catch {
    Write-Warning "purge des dossiers NOK"
    echo "purge NOK"
        exit 1
    }

  8. #8
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Le script fonctionne correctement
    Mais il purge juste les fichier.txt est non les dossiers :/
    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
    function New-FileNameTimeStamped {
        param($FileName, $Date = (Get-Date), $Format = 'dd-MM-yyyy-HH-mm-ss')
     
        $SF = New-object System.IO.FileInfo $FileName 
        "{0}\{1}-{2:$Format}{3}" -F $SF.Directory, $SF.BaseName, $Date, $SF.Extension
    } # New-FileNameTimeStamped
     
    # variable pour le fichier log avec la date grace a la fonction
    $LOG = New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'
     
     
    $Folder = "C:\Purge"
    # supprimer les fichiers plus anciens que 30 jours
    try {
        Get-ChildItem $Folder -Recurse -Force -ErrorAction stop | 
        where {-not $_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} | 
        ForEach-Object {
            $_ | Remove-Item -Force -ErrorAction stop
            $_.FullName | Out-File $LOG -Append
        }
        Write-Warning "purge des dossiers ok"
        echo "purge fini"
        exit 0
    }
    catch {
    Write-Warning "purge des dossiers NOK"
    echo "purge NOK"
        exit 1
    }

  9. #9
    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
    normal

    il te faut faire une autre boucle qui va vérifier si chaque sous-dossier est vide et le supprime

  10. #10
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par 6ratgus Voir le message
    normal

    il te faut faire une autre boucle qui va vérifier si chaque sous-dossier est vide et le supprime

    Je début sur powershell, je voir pas comment faire :/

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2009, 12h23
  2. Réponses: 4
    Dernier message: 29/09/2008, 15h48
  3. Recuperer le code retour d'un script ANT en Java
    Par Tidav16 dans le forum ANT
    Réponses: 0
    Dernier message: 25/09/2008, 16h36
  4. Bizzarerie en shell avec les codes retour
    Par kyake dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/04/2008, 12h20
  5. Gerer des codes retour avec BulK Insert
    Par Macfurp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/11/2007, 17h58

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