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 des fichiers en fonction de leur date [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut Supprimer des fichiers en fonction de leur date
    Bonjour,

    J'utilise une machine qui n'a plus la possibilité de démarrer son Windows 95, donc j'utilise DOS pour faire ce que je souhaites faire avec (bon pas grand chose). Et je souhaiterais là supprimer des fichiers d'un répertoire. Malheureusement ils sont beaucoup. Donc je souhaiterais savoir s'il était possible de supprimer les fichiers inférieur à une certaine date dans ce dossier avec la commande del ou bien erase.

    Si quelqu' un a une idée, je suis preneur car j'ai essayé mais sans succès.

    Merci d'avance

    Charlie

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    On a déjà traité ce cas, regarde ici

  3. #3
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Ok je vais regarder ce code. Bon je suis moins que débutant en batch mais je vais essayer.

  4. #4
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Avec mes connaissance en batch, j'ai réussi à écrire cela qui ne fonctionne pas du tout.
    Guardian je me suis servi du post sur ce sujet mais j'ai quelques soucis à comprendre certaines lignes du genre :

    for /r "%~1\" %%i in (*.*) do set VrChmFch=%%i& set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
    Ici, j'ai compris que la boucle for listait tous les fichiers et les mettaient dans la variable %~1. Mais ce que je n'ai pas saisi c'est ce que font les variables VrChmFch, VrNamFch et VrDatFch

    if %VrDatFch:~6,4% leq "%date%" del "%VrChmFch%" "%~p0:\*.*" /q /f
    Ici, j'ai compris que les fichiers doivent être supprimés jusqu'à la date de la variable date dans le répertoire courant.

    Mais snifff, le programme ne fait rien.

    Si quelqu'un pourrait m'aider, cela m'arrangerait.

  5. #5
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    VrChmFch = chemin complet du fichier
    VrNamFch = nom du fichier
    VrDatFch = date du fichier


    Donc tu veut supprimer tout les fichier antérieur à la date actuel ?

    Pourquoi tu a mi %~p0:, Tu veut récupérer la lettre du lecteur ? (parce que la tu récupére le chemin, pour la lettre c'est d et pas p %~d0)

    Fait voir ton code complet, je vai essayer d'arranger ca

  6. #6
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Bon j'ai oublié de poster mon code c'est vrai.

    Code bat : 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
     
    @echo off
    echo Cet outil va supprimer les fichiers non utilisés jusqu'à une certaine date
     
    Set /p date= Entrez la date jusqu'à laquelle vous voulez supprimer les fichiers :
    if "%date%"=="" goto fin
     
    for /r "%~1\" %%i in (*.txt) do set VrChmFch=%%i& set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
    goto finsuppression
     
    :suppression
    if  %VrDatFch:~6,4% leq "%date%" del "%VrChmFch%" "%~p0:\*.txt" /q /f
     
    goto :eof
    :finsuppression
     
    :fin
    echo.
    echo Fin du programme, appuyez sur une touche pour quitter l'application
    Pause > NUL

    Hihi

  7. #7
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Au fait mon code ne fonctionne que par l'année, pas le jour ni le mois, là je sèche

  8. #8
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Donc tu veut supprimer tout les fichier antérieur à la date actuel ?
    Nan, en fait je souhaites supprimer les fichiers antérieur à la date que l'utilisateur mettra dans la variable date.

    Pourquoi tu a mi %~p0:, Tu veut récupérer la lettre du lecteur ? (parce que la tu récupére le chemin, pour la lettre c'est d et pas p %~d0)
    Je pensais qu'en fait %~p0 était le chemin du répertoire courant

  9. #9
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    salut,



    Une donnée des plus importante n'a pas été prise en considération pendant tous vos postes.

    Citation Envoyé par charlix Voir le message
    démarrer son Windows 95, donc j'utilise DOS pour faire ce que je souhaites faire
    Il doit s'agir de la version Ms-Dos de Windows, c'est-à-dire la 7.0 ou la 7.1

    Alors attention à ne pas dépenser inutilement votre énergie à développer du code incompatible.


  10. #10
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    ah ben je ne connait pas win 95 donc je savaist pas, bon ben on verra bien si ca marche.

    D'apré toi qu'est ce qui serai imcompatible ?

  11. #11
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Voilà par exemple l'aide en ligne sur la commande FOR pour les systèmes Win16 et Win32noNTbased

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FOR %variable IN (ens) DO commande [param]
    
    %variable  Paramètre remplaçable.
    (ens)      Ensemble de fichiers séparés par des espaces. Caractères génériques permis.
    commande   Commande … exécuter pour chaque fichier.
    param      Paramètres ou commutateurs pour la commande spécifiée.
    Cette information parle d'elle-même en ce qui concerne l'incompatibilité des scripts que vous avez produits jusqu'ici.

    De même, les syntaxes tel que

    %VrDatFch:~6,4%
    ne sont pas permises sur ces systèmes.

    Ainsi, pour arriver à ses fins, il faut penser tout autrement et ne pas perdre de vue les limitations imposées par Ms-Dos.

  12. #12
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    ok mais la je ne saurai pas comment faire alor

  13. #13
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    En effet, disant que ça ne serait pas évident pour toi au premier abord d'autant plus que tu n'as pas la possibilité de tester.

    En principe, une des solutions serait d'opérer de la manière suivante:
    Utiliser la commande DIR pour enregistrer le contenu du dossier par ordre de date inverse.
    Analyser le log obtenue et partir à la recherche du premier fichier supprimable grâce à la même commande DIR.
    Une fois cet événement déclenché, enregistrer tous les fichiers restants dans un nouveau log.
    Enfin, supprimer tous les fichiers enregistrés qui sont notés dans le dernier log et qui sont forcément antérieurs au premier fichier supprimable indiqué par la commande DIR.

    NB:

    L'appel à l'interface QBasic de Windows 95 ou de MS-DOS 7.x serait d'un apport non négligeable.

  14. #14
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Citation Envoyé par koKoTis Voir le message
    moi je laisse tomber
    Ne jamais abandonner face à la difficulté, mais seulement prendre un peu de recul et reconsidérer le problème. En effet, s'il y a un embouteillage de 100 Km sur l'autoroute, j'y arriverai plus vite en prenant la nationale.

    Tu penses certainement que les mots, c'est bien beau, mais...

    Alors mise en Application:

    je relie le premier poste,

    Citation Envoyé par charlix Voir le message
    je souhaiterais savoir s'il était possible de supprimer les fichiers inférieur à une certaine date dans ce dossier avec la commande del ou bien erase.
    supprimer les fichiers inférieur à une certaine date

    date

    Qu'est-ce qu'il y a dans Ms-Dos qui me permettrait de manipuler des fichiers en fonction de leurs dates?

    Notre ami XCopy (Il y en a qui sont certainement en train de )

    D'accord, mais en quoi peut-il être utile dans ce contexte?

    Un tour vers l'aide en ligne: (extrait)

    XCOPY.EXE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Copie des fichiers (excepté les fichiers cachés et les fichiers système. voir 
    commande <ATTRIB>) et des répertoires ainsi que leurs sous-répertoires. 
    
    Syntaxe  
        XCOPY source [destination] [/Y|/-Y] [/A|/M] [/D:date] [/P] [/S] [/E] 
        [/V] [/W] 
    ...  
    /D:date 
        Copie uniquement les fichiers source qui ont été modifiés à la date 
        indiquée ou à une date ultérieure. Le format de date dépend du paramètre 
        utilisé avec la commande COUNTRY. 
    ...
    XCOPY32.EXE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Copie les fichiers et répertoires.
    XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/W]
                               [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
                               [/K] [/N]
    ... 
     /D:date      Copie les fichiers modifiés à ou après la date donnée.
                  Sans date, copie que les fichiers dont
                  l'heure source est antérieure à l'heure  destination.
    ...
    L'information importante c'est
    Copie les fichiers modifiés à ou après la date donnée.

    et ce que l'on veut c'est
    supprimer les fichiers inférieur à une certaine date

    Alors si on copie (sauvegarde) dans un autre dossier, tous les fichiers modifiés à ou après la date donnée, je peux carrément supprimer (deltree ou del) tout le dossier initial. En effet, les fichiers dont on a besoin, on vient de les sauvegarder avec la commande XCopy et tous les autres fichiers sont inférieurs à la date donnée, ce qui correspond bien à notre objectif.
    Ensuite, avec un simple Ren, on se retrouve dans les conditions recherché.

    Mais bon, il faut avoir la place nécessaire sur le disque. Et si la machine dispose de ports USB, il existe des pilotes Ms-Dos pour la prise en charge des clefs USB.

    enjoy

  15. #15
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Bonjour,

    C'est vrai que je n'avais pas pensé à ce problème. Je n'ai pas encore testé le fichier batch sur la machine en question mais au moins si il y a un soucis je sais dors et déjà d'où le problème peut provenir.

  16. #16
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Le fichier batch fonctionne très bien lorsque je mets la date en dur dans le code du batch mais lorsque je la saisie par le DOS lorsque le programme me la demande alors cela ne fonctionne pas.

    Avez-vous une idée du problème :

    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
    @echo off
    echo Cet outil va supprimer les fichiers obsoletes jusqu'a une annee determinee
    
    set /p date= Entrez la date jusqu'a laquelle vous voulez supprimer les fichiers :
    if "%date%"=="" goto fin
    
    set vrRepCible=C:\SIRPAC\HISTO
    
    for /r "%vrRepCible%\" %%i in (*.*) do set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
    goto finsuppression
    
    :suppression
    if %VrDatFch:~6,4% leq "%date%" del "%VrNamFch%" /q /f
    
    goto :eof
    :finsuppression
    
    :fin
    echo.
    echo Fin du programme, appuyez sur une touche pour quitter l'application
    Pause > NUL
    Merci d'avance

    Charlie

  17. #17
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    Tu a essayer sui win 95 ?

    tu entre juste l'année n'est ce pas ?

  18. #18
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Tu a essayer sui win 95 ?
    Nan je n'ai pas encore essayé sur la machine qui tourne sous win95, je souhaite d'abord que mon code fonctionne sur la mienne et si j'ai des soucis de version alors je réécrirais le code.

    tu entre juste l'année n'est ce pas ?
    Ouais dans le DOS il me demande bien de rentrer une date et je la rentre sous la forme 200... mais il ne la prend pas en compte et il termine bien le programme sans supprimer aucun fichier.

    Je ne comprend pas bien d'où le problème peut bien venir. Peut être bien que le code ne s'écrit pas comme cela pour déclarer une variable que l'utilisateur entrerait lui même ?

  19. #19
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set /p date= Entrez la date jusqu'a laquelle vous voulez supprimer les fichiers :
    if "%date%"=="" goto fin
    Cette ligne traite la date système.
    Pour traiter une date saisie sur la ligne de commande il faut utiliser %1

  20. #20
    Membre éclairé Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Par défaut
    Bonjour Guardian,

    Tu as peut être raison sur ce que tu avances, mais j'ai réglé mon problème, le batch fonctionne niquel en saisissant la valeur au clavier. Le problème venait des "" à coté de la variable date lorsque je l'appelais.

    voici mon qui fonctionne :

    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
    @echo off
    echo Cet outil va supprimer les fichiers obsoletes jusqu'a une annee determinee
    
    set /p date= Entrez la date jusqu'a laquelle vous voulez supprimer les fichiers :
    
    echo La date souhaitée est %date%
    
    set vrRepCible=C:\SIRPAC\HISTO
    
    for /r "%vrRepCible%\" %%i in (*.*) do set VrNamFch=%%~pnxi& set VrDatFch=%%~ti& call :suppression
    goto finsuppression
    
    :suppression
    if %VrDatFch:~6,4% leq %date% del "%VrNamFch%" /q /f
    
    goto :eof
    :finsuppression
    
    :fin
    echo.
    echo Fin du programme, appuyez sur une touche pour quitter l'application
    Pause > NUL

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] supprimer des fichiers en fonction de la date de creation
    Par choupinou22 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 13/04/2015, 20h47
  2. supprimer des fichiers en fonction de leur extension
    Par nekcorp dans le forum Général Python
    Réponses: 6
    Dernier message: 14/05/2014, 18h26
  3. Supprimer des fichiers en fonction d'une date
    Par Sh4dow49 dans le forum Administration système
    Réponses: 1
    Dernier message: 02/06/2009, 22h36
  4. Supprimer des fichiers en fonction de la date sous DOS
    Par charlix dans le forum Windows
    Réponses: 0
    Dernier message: 21/03/2008, 08h18
  5. Récuperer des fichiers en fonction de leur ancienneté
    Par julien000 dans le forum Langage
    Réponses: 3
    Dernier message: 24/07/2006, 17h09

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