[BATCH] Suppresion des x plus vieux fichiers
Résolu
Tartopom
-
Tartopom -
Tartopom -
Bonjour,
je dois faire un programme .bat qui copie le contenu d'un dossier sur un serveur, vide le dossier de base, compte le nombre de fichiers dans le dossier de destination et si il y en a plus de 100, supprime les plus vieux. Mon problème se situe au moment de supprimer les plus vieux fichiers, ça ne marche et mon invité de commandes se ferme tout seul, je ne peux donc pas voir d'où vient l'erreur. Je précise que je le PC sur lequel le script est exécuté est un Windows XP et le serveur où sont copiées les données un Windows Server 2003.
Voici la portion de code qui pose problème :
Le problème se situe dans la boucle for et j'avoue que je sèche.
Je vous remercie d'avance pour vos réponses,
Tartopom
je dois faire un programme .bat qui copie le contenu d'un dossier sur un serveur, vide le dossier de base, compte le nombre de fichiers dans le dossier de destination et si il y en a plus de 100, supprime les plus vieux. Mon problème se situe au moment de supprimer les plus vieux fichiers, ça ne marche et mon invité de commandes se ferme tout seul, je ne peux donc pas voir d'où vient l'erreur. Je précise que je le PC sur lequel le script est exécuté est un Windows XP et le serveur où sont copiées les données un Windows Server 2003.
Voici la portion de code qui pose problème :
rem CALCUL DU NOMBRE DE FICHIERS A SUPPRIMER set /a nb_files_to_del=%compt%-100 rem SUPPRESION DES FICHIERS TROP VIEUX if %nb_files_to_del% gtr 0 ( echo. echo Suppression des %nb_files_to_del% plus vieux traces set /a compt2=0 for %%X in ("\\adresse_du_dossier_sur_le_serveur\*.*") do ( if %compt2% lss %nb_files_to_del% ( del %%X set /a compt2+=1 echo %%X ) ) ) echo. echo Sauvegarde effectuee avec succes pause
Le problème se situe dans la boucle for et j'avoue que je sèche.
Je vous remercie d'avance pour vos réponses,
Tartopom
A voir également:
- [BATCH] Suppresion des x plus vieux fichiers
- Site x - Guide
- Sites X : Pornhub, YouPorn et Redtube sont de nouveau accessibles en France - Guide
- Fichier batch - Guide
- Renommer des fichiers en masse - Guide
- Photoscape x - Télécharger - Retouche d'image
7 réponses
Alors j'ai un peu avancer. Le problème vient du fait que la variable compt2 ne s'incrémente pas dans la boucle for. J'ai vaguement entendu parler d'une méthode avec des ! Ca vous dit quelque chose ?
J'ai également déclarer la variable compt2 avant la portion de code que je vous ai donnée car elle ne se déclarait pas.
J'ai également déclarer la variable compt2 avant la portion de code que je vous ai donnée car elle ne se déclarait pas.
Yop,
j'ai pratiquement fini. Je vous poste la portion de code
[code]
setlocal enableDelayedExpansion
rem CALCUL DU NOMBRE DE FICHIERS A SUPPRIMER
set /a nb_files_to_del=%compt%-100
set /a compt2=0
rem SUPPRESION DES FICHIERS TROP VIEUX
if %nb_files_to_del% gtr 0 (
echo.
echo Suppression des %nb_files_to_del% plus vieux traces
for %%X in ("\\adresse_du_dossier_sur_le_serveur\*.*") do (
if !compt2! lss %nb_files_to_del% (
del %%X
set /a compt2+=1
echo suppresion du fichier %%X
)
)
)
echo.
echo Sauvegarde effectuee avec succes
pause
[/code]
Un dernier problème se pose cependant : le boucle parcourt le dossier par ordre alphabétique alors que je voudrais le parcourir par date de dernière modification (qu'importe le sens). Avez-vous une idée ?
j'ai pratiquement fini. Je vous poste la portion de code
[code]
setlocal enableDelayedExpansion
rem CALCUL DU NOMBRE DE FICHIERS A SUPPRIMER
set /a nb_files_to_del=%compt%-100
set /a compt2=0
rem SUPPRESION DES FICHIERS TROP VIEUX
if %nb_files_to_del% gtr 0 (
echo.
echo Suppression des %nb_files_to_del% plus vieux traces
for %%X in ("\\adresse_du_dossier_sur_le_serveur\*.*") do (
if !compt2! lss %nb_files_to_del% (
del %%X
set /a compt2+=1
echo suppresion du fichier %%X
)
)
)
echo.
echo Sauvegarde effectuee avec succes
pause
[/code]
Un dernier problème se pose cependant : le boucle parcourt le dossier par ordre alphabétique alors que je voudrais le parcourir par date de dernière modification (qu'importe le sens). Avez-vous une idée ?
Bon j'avance tout seul, à tatillons. Je continue à poster ici dans l'espoir qu'une personne qualifiée m'aide à finir mon script.
Maintenant j'arrive à parcourir le dossier dans l'ordre de dernière date de modification. Seul hic, j'ai l'impression que ce n'est plus le fichier qui est contenu dans %%X. Je m'explique, voici le résultat que me sort la console :
"Suppression des 5 plus vieux traces"
"Suppresion du fichier Le volume dans le lecteur \\mon_dossier_sur_le_serveur est Bureautique"
"Suppression du fichier Le numéro de série du volume est XXXX-XXXX"
"Suppression du fichier Répertoire de \\mon_dossier_sur_le_serveur"
"Suppression du fichier 11/08/2008 20:26 59 259 banniere.jpg"
"Suppression du fichier 21/08/2008 21:04 1 920 sounds.js"
et voici le code qui génère ça :
Maintenant j'arrive à parcourir le dossier dans l'ordre de dernière date de modification. Seul hic, j'ai l'impression que ce n'est plus le fichier qui est contenu dans %%X. Je m'explique, voici le résultat que me sort la console :
"Suppression des 5 plus vieux traces"
"Suppresion du fichier Le volume dans le lecteur \\mon_dossier_sur_le_serveur est Bureautique"
"Suppression du fichier Le numéro de série du volume est XXXX-XXXX"
"Suppression du fichier Répertoire de \\mon_dossier_sur_le_serveur"
"Suppression du fichier 11/08/2008 20:26 59 259 banniere.jpg"
"Suppression du fichier 21/08/2008 21:04 1 920 sounds.js"
et voici le code qui génère ça :
echo Suppression des %nb_files_to_del% plus vieux traces for /F "delims=" %%X in ('dir /o:d "\\mon_dossier_sur_le_serveur\*.*"') do ( if !compt2! lss %nb_files_to_del% ( rem del %%X set /a compt2+=1 echo suppression du fichier %%X ) )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question