Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Suppression de fichiers de plus de 30 jours
Auteur Message
Répondre en citant
Message Suppression de fichiers de plus de 30 jours 
Bonjour,

Je suis nouvelle sur le forum et j'ai écumé les différents forums afin de trouver une solution mais en vain :

Je dois mettre en place un script de purge afin de supprimer des fichiers de plus de 30 jours dans toute l'arborescence d'un répertoire sous windows 2008 R2.
Voici ce que j'ai mis en place, en sachant que je ne suis pas expérimentée en batch.

-J'ai créé un fichier purge.cmd dans lequel se trouve mes commandes et un fichier purge_files.cmd qui permet de lancer le purge.cmd et de créer le fichier de log correspondant à l'exécution. Le fichier purge_files.cmd est lancé par une tâche.
Voici le contenu de mes fichiers :

purge.cmd
Code:

@echo off
echo===================================================================
echo Purge Date : %DATE% %TIME%     
echo==================================================================
 
REM Purge remaining Oracle archive logs
set directory1=E:\oracle\archive
set directory2=E:\oracle\10gappr2\Apache\Apache\logs
set directory3=E:\MICROS\opera\Tools\rollback
set logDirectory=C:\accorprg\dgsit\opera\PURGE
set days=30

:Purge1
echo==================================================================
echo Directory of Purge : %directory1%
IF NOT EXIST %directory1% echo The directory %directory1% doesn't exist. && GOTO :Purge2
FORFILES /p %directory1% /s /m *.* /d -%days% /c "cmd /c echo %TIME% File to delete : @file @fdate && Del @file && echo %TIME% Purge remaining Oracle archive logs done!" 2>&1 | find /v /i "ERROR: No files found with the specified search criteria."

:Purge2
echo==================================================================
REM Purge Apache logs
echo Directory of Purge : %directory2%
IF NOT EXIST %directory2% echo The directory %directory2% doesn't exist. && GOTO :Purge3
FORFILES /p %directory2% /s /m *.* /d -30 /c "cmd /c echo %TIME% File to delete : @file @fdate && Del @file && echo %TIME% Purge Apache logs done !" 2>&1 | find /v /i "ERROR: No files found with the specified search criteria."

:Purge3
echo==================================================================
REM Purge Opera patchs, each is located in a subdir
echo Directory of Purge : %directory3%
IF NOT EXIST %directory3% echo The directory %directory3% doesn't exist. && GOTO :Purge4
FORFILES /p C:\MICROS\opera\Tools\rollback /s /m *.* /d -30 /c "cmd /c echo %TIME% File to delete : @path @fdate && Del @path && echo %TIME% Purge Opera patchs done!" 2>&1 | find /v /i "ERROR: No files found with the specified search criteria."
echo===================================================================

:Purge4
echo==================================================================
REM Purge old logs files
FORFILES /p %logDirectory% /s /m Purge_log*.txt /d -15 /c "cmd /c Del @path && echo %TIME% Purge old logs files also DONE !" 2>&1 | find /v /i "ERROR: No files found with the specified search criteria."
echo===================================================================
echo=====================ALL DONE !====================================
echo===================================================================


GOTO eof
:eof

::::::::::::::::::::::::::::::::::::::

purge_files.cmd
Code:

@echo off

CD C:\accorprg\dgsit\opera\PURGE

call ".\purge.cmd"

set day=%date:~10,4%%date:~4,2%%date:~7,2%

purge.cmd >>Purge_Log_%day%.txt



Problème :

Forfiles génère l'erreur "No files found with the specified search criteria" lorsqu'aucun fichier correspondant aux critères n'est trouvé.
Pour résoudre ce problème j'ai utilise la commande "2>&1 | find /v /i "ERROR: No files found with the specified search criteria."" qui empêche l'affichage de cette erreur et la redirige vers une autre sortie.
En utilisant cette commande et après avoir utilise tous les opérateurs existants(&, &&, | ou ||) , il m'est impossible d'afficher le texte "No files to delete" lorsqu'il n'y a aucun fichier.

Quelqu'un a t-il déjà été confronté à ce problème et serait t-il susceptible de m'aider s'il vous plait?

Je privilégie le langage de script cmd car je suis tout juste débutante et je vais au plus simple.

Je vous remercie d'avance



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Suppression de fichiers de plus de 30 jours 
Salut,

t'as essayé simplement :

Code:
FORFILES /p %logDirectory% /s /m Purge_log*.txt /d -15 /c "cmd /c Del @path 2>nul && echo %TIME% Purge old logs files also DONE !" || echo  "No files to delete"


Et habitue toi a encapsuler tes chemins dans des strings pour éviter les surprises en cas de nom composé :

Code:

set directory1="E:\oracle\archive"
set directory2="E:\oracle\10gappr2\Apache\Apache\logs"
set directory3="E:\MICROS\opera\Tools\rollback"
set logDirectory="C:\accorprg\dgsit\opera\PURGE"


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Suppression de fichiers de plus de 30 jours 
sachadee a écrit:
Salut,

t'as essayé simplement :

Code:
FORFILES /p %logDirectory% /s /m Purge_log*.txt /d -15 /c "cmd /c Del @path 2>nul && echo %TIME% Purge old logs files also DONE !" || echo  "No files to delete"


Et habitue toi a encapsuler tes chemins dans des strings pour éviter les surprises en cas de nom composé :

Code:

set directory1="E:\oracle\archive"
set directory2="E:\oracle\10gappr2\Apache\Apache\logs"
set directory3="E:\MICROS\opera\Tools\rollback"
set logDirectory="C:\accorprg\dgsit\opera\PURGE"


Okay




Bonjour,

J'ai essayé mais cela ne fonctionne pas.
J'ai également fait un mixte de cette commande et de la mienne mais toujours KO.

merci,



Répondre en citant
Message Suppression de fichiers de plus de 30 jours 
Hello ^

oui je sais c'est hyper tordu comme soluce mais j'ai pas trouvé mieux ...
En effet pas moyen de ne pas afficher l'erreur avec forfile Evil or Very Mad
Si tu peux bidouiller avec ça:
Code:

@echo off
cls
for /f "tokens=*" %%$ in ('FORFILES /p c: /m *.* /d -10 /c "cmd /c echo @fname"') do (
call :VALIDATE "%%$"
)
cls &goto :NEXT
:VALIDATE
:: tu fais ICI les action DEL avec tes fichiers obtenus !!!
echo %~1
goto :EOF
:NEXT
echo suite du code !
pause





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Suppression de fichiers de plus de 30 jours 
Citation:
En effet pas moyen de ne pas afficher l'erreur avec forfile Evil or Very Mad



Vraiment étrange :

Ceçi fonctionne parfaitement chez-moi :

Code:

@FORFILES /p %cd% /s /m *.* /d -1 /c "cmd /c echo %TIME% File to delete : @path @fdate && Del @path && echo %TIME% Purge Opera patchs done!" 2>nul || echo No Files Found



En vidéo : http://screencast.com/t/Na9WodNI

La même chose sans le 2>nul en Video : http://screencast.com/t/oKMkC5T84

Wink




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Message Suppression de fichiers de plus de 30 jours 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch