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 fichiers datant de X jours


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 25
    Points
    25
    Par défaut Supprimer fichiers datant de X jours
    Bonjour,

    Je cherche à faire un script Batch qui me supprimerait mes fichiers datant de X jours et ayant l'extention .txt. Est-ce possible que les fichiers supprimés ne se retrouvent pas dans la corbeille?

    Merci de votre aide.
    En attendant je parcours le forum pour chercher.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Bonjour

    en utilisant la commande externe forfiles tu peux supprimer les fichiers plus vieux de X jours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
    set fich=C:\documents
    set jour=7
    forfiles -p %fich% -s -m *.txt -d-%jour% -c "cmd /c del @FILE"
    @exit
    Voici un exemple avec -d-10 = 10 jours autour d'un boucle qui le fait dans tous les répertoires nommés test* (test01, test02)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    for /F %%a in ('dir "C:\test*" /b /s /a:d') do (forfiles -p%%a -s -m *.txt -d-10 -c "cmd /c del @FILE")
    pause
    Commande forfiles : http://www.box.net/shared/con2pdz8h5
    Aide forfiles : http://technet.microsoft.com/fr-fr/l.../cc755872.aspx
    Sujet forfiles : http://www.developpez.net/forums/d36...vieux-3-jours/

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Salut!
    Est-ce possible que les fichiers supprimés ne se retrouvent pas dans la corbeille?
    En DOS les suppressions sont irrémédiables et n'iront pas dans la corbeille.

    Maintenant pour améliorer un peu le script de Acris tu peux faire ceci pour préciser deux éléments dans le batch :
    le chemin d'accès aux fichiers ".txt" ciblés.
    le nombre de jours devant être décomptées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off 
    set fich=chemin d'accès 
    set jour= 
    set /p jour= donner le nombre de jours a deduire: 
    
    forfiles -p%fich% -s -m*.txt -d-%jour% -c"cmd /c del @FILE" 
    pause
    Conditions d'utilisation :
    Forfile.exe doit se trouver dans le même dossier que le batch ou répertoire parent.
    chemin d'accès = chemin complet jusqu'au dossier ciblé
    exemple de chemin --> %systemdrive%\Endroitdestockage
    donner le nombre de jours a deduire = 1 ou 3 ou 20 ou 400 ...

    >danakil1

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Je remonte un peu le sujet, mais cela me pose un problème pour les fichiers qui comportent des espaces, avez vous une idée pour que cela puisse également effacer les fichiers avec espaces?

    Merci d'avance

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé pour les fichiers avec espaces, c'est la commande suivante :

    forfiles -p%fich% -s -m*.* -d-%jour% -c"cmd /c del \"@FILE\" "
    Par contre est-il possible d'enchainer cette commande, avec une commande qui supprimerai les dossiers qui sont vide? (puisque la commande si dessus ne supprimer que les fichiers, et non les dossiers)

    Merci

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Tu ajoutes une boucle


    @echo off

    :our chaque dossier contenu sur le bureau vérifier si la taille est egal à 0 et supprime le dossier.

    for /f %%i in ('DIR /b "%userprofile%\Bureau"') do if %%~zi EQU 0 RD "%userprofile%\Bureau\%%i"
    pause
    remplace le chemin par le tien

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, et dans le cas ou les dossier contiennent des espaces? je dois rajouter quoi à ta commande?

    Merci encore

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    for /f "tokens=*" %%i in ('DIR /b "%userprofile%\Bureau"') do if %%~zi EQU 0 RD "%userprofile%\Bureau\%%i"

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    it works !

    Merci

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Dans le genre chiant, je continue.

    Le script :
    forfiles -p%fich% -s -m*.* -d-%jour% -c"cmd /c del \"@FILE\" "
    Delete les fichiers modifié il y a X jours, et j'aurai souhaité que cela supprime les fichiers Créer il y a X jours. Est-ce possible?

    Car lorsque je copie un fichier qui était sur mon pc depuis plus de 7 jours (par exemple) dans le dossier sur lequel est exécuter ce script, cela supprime mon fichier, alors que je viens juste de le copier.

    Merci d'avance

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Peut être en te basant sur la date du fichier

    dir /OD...

  12. #12
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    "En DOS les suppressions sont irrémédiables" ha bon, et si je les mets dans le dossier corbeille ?

    Dans le genre tu as aussi robocopy qui marche trés bien ...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Oups, je reviens au sujet de la syntaxe de la commande pour supprimer les fichiers selon leur taille en octet :

    do if %%~zi EQU 0

    Comment écrire si les fichiers >= 1Go ?

    Merci pour votre aide.

  14. #14
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    L'unité c'est l'octet, soit 1073741824 octets pour 1Go.
    Pour supprimer un fichier c'est la commande del, à mettre à la place de echo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if %%~zi geq 1073741824 echo %%i
    Comme la console, du moins sur win32, ne supporte que les opérations sur des entiers 32bits signés, tu risques d'avoir des résultats inattendus lorsque la taille des fichiers dépasse 1.99Go.

    Peut-être qu'un utilitaire de la famille GNU pourrait combler cette lacune.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Merci Minnesota
    Bonne remarque sur l'unité octet...Où avais-je la tête, déjà oublié les 1024 par octet..

    Le code %%~zi s'apparente à un dossier, mais comment coder pour tous les fichiers (files) du répertoire ?

    Mais avant de supprimer les fichiers de 1Go, j'ai testé la suppression selon le nbe de jours écoulés et ça ne fonctionne pas, le script passe mais sans action :

    set fich=C:\documents
    set jour=5
    forfiles -p %fich% -s -m *.txt -d-%jour% -c "cmd /c del @FILE"

    Je voudrais savoir si tu peux détailler la syntaxe, car comment les 5 jours dans mon exemple sont décomptés..Où est la recherche de la date du fichier (date modifiée) ?
    A moins que j'ai laissé des espaces ou pas assez entre les commandes ?
    Bref, ça ne passe pas.
    As-tu testé atrement ?

  16. #16
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    non, mais il y a un sujet à ce propos pointé par Acris juste au dessus.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Oui, eh bien j'ai testé ce que Acris a solutionné, mais ça ne fonctionne pas.

    Peut être que le @File est inaproprié (?). Je vais tester avec %%i

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Ca y est, capichtre
    Je n'avais pas téléchargé le Forfiles.exe lequel permet de paramétrer de la sorte...Très puissant donc cet éxécutable...On arrête pas le progrès !

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    La commande : if %%~zi equ 0 del %%i
    ne passe pas . Message d'erreur au lancement :
    L'utilisation de l'opérateur de commande n'est pas valide :
    %~zi equ 0 del %%i

    J'ai essayé avec forfile :

    FORFILES -p"%fich%" -c"cmd /c if @fsize geq 1073741824 del @FILE"

    Pas de message mais pas d'action non plus...
    Je pense que c'est la syntaxe de l'opérande n'est pas correcte.
    Qlqu'un a t-il une idée ou vécu cela ?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Points : 21
    Points
    21
    Par défaut
    Eurêka
    Décidément, les majuscules comptent...Voici la bonne syntaxe qui a donc fonctionné :

    FORFILES -p"%fich%" -c"cmd /c if @FSIZE geq 1073741824 del @FILE"

    OUF !!!

Discussions similaires

  1. forfiles - Supprimer les fichiers vieux de 3 jours
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 34
    Dernier message: 22/11/2011, 19h20
  2. [Batch] Script de déplacement de fichiers datant de 10 jours
    Par sousket dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 15/06/2011, 17h49
  3. [PHP 5.3] Supprimer fichier vieux de X jours
    Par mamax29 dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2010, 11h25
  4. Supprimer les fichiers vieux de x jours
    Par zounours-69 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 12/06/2008, 15h11
  5. supprimer fichiers non modifiés depuis X jours
    Par tyrax dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 18h10

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