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 précis, selon la date


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Supprimer des fichiers précis, selon la date
    Bonjour, je souhaiterai, comme indiqué dans le titre, supprimer des fichiers précis en fonction du nom d'un dossier et de la date du système, j'ai le début de mon programme ci dessous, et à la fin, il y a en gros ce que j'aimerai faire, j'ai cherché pas mal et je commence à me débrouiller, mais j'ai pas forcément trouvé ce que je veux sur internet... Mon code est intégralement commenté au cas ou.

    Sous windows, en fichier batch .bat

    Si vous pourriez m'aider ce serait super cool ! Merci à vous

    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
    ::N'affiche pas les commandes dans le CMD
    @echo off
    ::Repertoire où ls commandes vont s'effectuer
    cd C:\FTP
    ::Renomme backup.conf avec la date du système au format JJ.MM.AAAA
    ren "backup.conf" "%DATE:~0,2%.%DATE:~3,2%.%DATE:~6,4%.conf"
    ::Donne à la variable file_ext, la valeur *.conf
    set file_ext="*.conf"
    ::donne à la variable mois, le mois actuel du systeme
    set mois=%DATE:~3,2%
    
    
    ::Pour les fichiers qui ont l'extension .conf, faire :
    For %%a in (%file_ext%) do (
    ::Séparer en 3 le nom des fichiers, chaque bloc est séparé par le caractère ".", 
    For /f "tokens=1-3 delims=." %%b in ("%%a") do (
    ::La variable date, prends la valeur de la 2e partie %%c, du nom du fichier (06, pour le mois de juin par exemple)
           set date=%%c	
    ::Si le dossier du mois actuel correspondant au nom du fichier n'existe pas, alors on le créer
    		If not exist "C:\FTP\%%c" (mkdir "C:\FTP\%%c")	
    ::Deplacer le fichier .conf dans le dossier en question
    		Move /Y "%%a" "%%c\%%a" >nul
    	
    ))
    		 pause 
    	::   Ce programme, renomme un fichier backup.conf avec la date actuelle du système, et le place dans un dossier qui se nomme par le mois actuel du système (Jusqu'ici, il fonctionne très bien).
    	
    	::   Je souhaiterai idéalement que :
    	:: → Quand le dossier %%c, est égal à date du systeme -1, supprimer tout les fichiers .conf dans le dossier %%c et laisser le dernier.
    	
    	
    	
    	:: → Pour éclaircir le truc avec un exemple : Le dossier 06(mois de juin) comporte 5 fichiers .conf.
            :: → quand je passe en 07(juillet), il supprime 01.06.2018.conf, 08.06.2018.conf, 15.06.2018.conf, 22.06.2018.conf et laisse impérativement 29.06.2018.conf

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Un début de code, j'ai essayer de commenter aussi un peu pour toi.

    Code batch : 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
    REM Calcul le mois précedent
    SET /a PrevMonth=%DATE:~3,2%-1
     
    REM Si le mois précedent est 0 on le définit à 12 
    IF %PrevMonth% EQU 0 SET PrevMonth=12
     
    REM Ajoute le 0 non significatif devant
    SET PrevMonth=0%PrevMonth%
    SET PrevMonth=%PrevMonth:~-2%
     
    REM Si le dossier mois précédent n'existe pas on va à la fin du script
    IF NOT EXIST "%PrevMonth%\" GOTO :EOF
     
    REM Affiche les fichiers avec l'extension ".conf", dans le dossier du mois précédent, par tri alphabétique inversé et saute le premier (le plus récent)
    REM Puis supprime chaqu'un de ces fichiers
    FOR /F "tokens=* delims=" %%a IN ('DIR /B /A-D /O-N "%PrevMonth%\*.conf" ^| more +1') DO DEL /F /Q /A "%PrevMonth%\%%~a"
     
    REM Ptite pause café
    PAUSE

Discussions similaires

  1. Macro VBa pour ouvrir des fichiers excel selon une date
    Par lovlov33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/05/2018, 12h16
  2. [Batch] Supprimer des fichiers en fonction de leur date
    Par charlix dans le forum Scripts/Batch
    Réponses: 55
    Dernier message: 05/10/2015, 17h18
  3. supprimer des fichiers sous dos en fonction de leur date
    Par nikoko dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/04/2008, 16h37
  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. [FTP] Supprimer des fichiers supérieurs à une date
    Par Ouark dans le forum Internet
    Réponses: 4
    Dernier message: 03/09/2007, 09h53

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