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 :

Supprimer un fichier qui a une date de création de plus de 10 jours si il n'y a pas eu de modification [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2020
    Messages : 7
    Par défaut Supprimer un fichier qui a une date de création de plus de 10 jours si il n'y a pas eu de modification
    Bonjour,

    Je voudrais mettre en place un Batch file dans un planificateur de taches sur un serveur qui permet de Supprimer les fichiers qui ont une date de création de plus de 10 jours.
    si il y a eu des modifications depuis leur création, le Batch file doit supprimer 10 jours après la dernière modification.
    Il doit également supprimer les dossiers et sous dossier vide.

    Le batch file que j'utilise fonctionne mais en fonction de la date de modification, ça veut dire que si un document est copié sur le serveur, il garde la date de modification d'origine mais la date de création sera celle du moment ou il est copié.
    Désolé si c'est un peu mélangeant.

    Le voici:

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
     
    forfiles /p "CHEMIN" /s /m *.* /c "cmd /c Del @path" /d -10
     
    for /f "tokens=*" %%i in ('dir /s /b /ad CHEMIN* ^| sort /r') do rd "%%~i"
     
    @exit


    J'ai trouvé un code PowerShell qui fait le travail et qui fonctionne mais juste en fonction de la date de création et donc ne prend pas en compte si le fichier a une modification par la suite.

    Le voici:

    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
    $DataFolder = "CHEMIN"
    $Time = 1
     
    Set-Location $DataFolder
     
    Get-ChildItem $DataFolder -Recurse -File | ?{$_.CreationTime -lt (get-date).AddDays(-$Time)} | %{Remove-Item $_.FullName -Force}
     
    function findolder($apath) {
        $items = get-childitem $apath -force
        foreach($fileordir in $items) {
            if($fileordir.PSIsContainer) {
                findolder($fileordir.FullName)
                $childrens = get-childitem $fileordir.FullName -force
                if($childrens -eq $null) {
                    remove-item $fileordir.FullName
                }
            }
        }
    }
     
    findolder("CHEMIN")

    Avez-vous un Batch file qui peut faire le travail ?

    Merci beaucoup

  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
    Je voudrais mettre en place un Batch file dans un planificateur de taches sur un serveur qui permet de Supprimer les fichiers qui ont une date de création de plus de 10 jours.
    si il y a eu des modifications depuis leur création, le Batch file doit supprimer 10 jours après la dernière modification.
    En fait tu veux un script qui supprime le fichier que si la date de création et de modification sont supérieur à 10 jours.

    Il doit également supprimer les dossiers et sous dossier vide.
    Un fichier ne peux pas contenir de dossier.


    Il est conseillé de garder le script Powershell et d'ajouter une condition dans le Where-Object

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2020
    Messages : 7
    Par défaut
    Voici la condition:
    - Si la date de création < que la date de modification alors supprimer le fichier 10 jours après sa date de modification
    - Si la date de création >= que la date de modification alors supprimer le fichier 10 jours après sa date de création

    Effectivement je pense que c'est mieux de garder le Code PowerShell et de mettre une condition.
    Es-tu capable de le compléter avec la condition ? La il supprime les fichiers de plus de 10 jours avec la date de création et supprime également les dossiers et sous dossier vide.
    Il faudrait maintenant intégrer la suppression de fichiers après 10 jours suite à une modification après la date de création.

    Merci beaucoup


    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
     
    $DataFolder = "CHEMIN"
    $Time = 1
     
    Set-Location $DataFolder
     
    Get-ChildItem $DataFolder -Recurse -File | ?{$_.CreationTime -lt (get-date).AddDays(-$Time)} | %{Remove-Item $_.FullName -Force}
     
    function findolder($apath) {
        $items = get-childitem $apath -force
        foreach($fileordir in $items) {
            if($fileordir.PSIsContainer) {
                findolder($fileordir.FullName)
                $childrens = get-childitem $fileordir.FullName -force
                if($childrens -eq $null) {
                    remove-item $fileordir.FullName
                }
            }
        }
    }
     
    findolder("CHEMIN")

  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
    Voici la condition:
    - Si la date de création < que la date de modification alors supprimer le fichier 10 jours après sa date de modification
    - Si la date de création >= que la date de modification alors supprimer le fichier 10 jours après sa date de création
    En fait tu veux un script qui supprime le fichier que si la date de création et de modification sont supérieur à 10 jours

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $DataFolder = "CHEMIN"
    $Time = 1
     
    $dateRef = (get-date).AddDays(-$Time)
    Get-ChildItem $DataFolder -File | Where-Object {$_.CreationTime -lt $dateRef -and $_.LastWriteTime -lt $dateRef} | ForEach-Object {Remove-Item $_.FullName -Force}

  5. #5
    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
    Voici pour les dossiers vides en gardant la même logique

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $DataFolder = "CHEMIN"
    Get-ChildItem $DataFolder -Directory -Recurse | Where-Object {($_.GetDirectories("*.*")).count -eq 0 -and ($_.GetFiles("*.*")).count -eq 0} | ForEach-Object {Remove-Item $_.FullName -Force}

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2020
    Messages : 7
    Par défaut
    @ericlm128 j'ai testé ça fonctionne parfaitement. Merci beaucoup.

    - Le premier code par contre ne supprime pas les fichiers dans les sous dossiers. As-tu la solution ?

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $DataFolder = "CHEMIN"
    $Time = 1
     
    $dateRef = (get-date).AddDays(-$Time)
    Get-ChildItem $DataFolder -File | Where-Object {$_.CreationTime -lt $dateRef -and $_.LastWriteTime -lt $dateRef} | ForEach-Object {Remove-Item $_.FullName -Force}

    - Est-il possible de mettre les 2 codes en un seul ? je les ai testé à part, je manque malheureusement d’expérience. Si oui peux-tu me montrer ? Sinon je ferais 2 PowerShell.


    Merci Boss

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/10/2014, 12h21
  2. supprimer les fichiers qui ne sont pas dans une liste
    Par jeorcal dans le forum Langage
    Réponses: 7
    Dernier message: 15/01/2011, 10h03
  3. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 12h59
  4. Supprimer des fichier qui sont vieux d'une semaine
    Par islyoung2 dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 20/09/2009, 19h32
  5. fonction javascript qui rassemble une date
    Par Dizystorm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/12/2004, 10h03

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