Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Programmation forfiles
Auteur Message
Répondre en citant
Message Programmation forfiles 
Bonjour

J'ai un batch qui fait une sauvegarde planifiée et qui envoie la sauvegarde zippée sur un FTP automatiquement.
Jusque là tout se passe bien.
Etant donné que le disque dur est relativement petit j'ai besoin de faire une purge régulière des fichiers et dossiers plus vieux que N jours.
pour l'instant c'est en manuel donc contraignant : je me suis alors tourné vers forfiles :

J'ai donc créé un batch pour supprimer des fichiers plus vieux que N jours
Voici ma commande :

forfiles -pg:\ -s -m*.* -d-17 -c"cmd /C del @FILE" (je supprime les fichiers qui ont plus de 17 jours (pour le test) dans le répertoire G:\)

le souci que j'ai est qu'il y a dans g:\ à la fois des fichiers et des répertoires; pour les fichiers pas de souci mais pour les répertoires il me demande systématiquement une confirmation

Comment est ce que je peux faire pour ne pas avoir cette confirmation ?

pour info je ne suis pas spécialement attaché a FORFILES.

Par avance merci pour votre aide.

Mathias



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Programmation forfiles 
Code:
forfiles -pg:\ -s -m*.* -d-17 -c"cmd /C del / @FILE

le commande del est pour les fichiers

la commande rd est pour les dossiers.

A tester avec un dossier de test


Code:
forfiles -pg:\ -s -m*.* -d-17 -c"cmd /C RD /s /q / @FILE





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message Programmation forfiles 
Bonsoir

je viens de tester votre commande :
J'ai pris la liberté de rajouter un " à la fin de la commande

Avec les arguments /s /q / j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD /s /q / @FILE"
Option non valide - "20130506".
Option non valide - "RECYCLER".

Avec les arguments /s /q j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD /s /q @FILE"
Accès refusé.
Le nom de répertoire est incorrect.
Le nom de répertoire est incorrect.

Avec l'argument /s j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD /s @FILE"
System Volume Information, êtes-vous sûr (O/N) ? n
attestat° versement revenu 220812.pdf, êtes-vous sûr (O/N) ?

Avec les arguments /s / j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD /s / @FILE"
Option non valide - ""System Volume Information"".
Option non valide - ""attestat° versement revenu 220812.pdf"".

Avec les arguments /q / j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD /q / @FILE"
Option non valide - ""System Volume Information"".
Option non valide - ""attestat° versement revenu 220812.pdf"".
Option non valide - ""DEP REC EPS.ods"".

Avec les arguments /q j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD /q @FILE"
Accès refusé.
Le nom de répertoire est incorrect.
Le nom de répertoire est incorrect.
Le nom de répertoire est incorrect.

Sans argument j'ai :
D:\Mes Documents\ADMIN>forfiles -pg:\ -s -m*.* -d-18 -c"cmd /C RD @FILE"
Le répertoire n'est pas vide.
Le répertoire n'est pas vide.
Accès refusé.


Ne devrait on pas remplacer @file par @isdir ?

Je voudrais juste ajouter SNIFFF voire BOUHOUUOUOUOU....

Merci quand meme pour vore aide...

Mathias



Répondre en citant
Message Programmation forfiles 
Bonjour

vue que ce soit des dossiers avec fichiers je ne pense pas que le parametre m doit indispensable
@ISDIR va testé si c est un dossier et si c est un dossier le supprimera , il est possible qu il faille mettre deux forfiles un pour les dossiers et un autre pour les fichiers.

A tester
Code:

@ECHO OFF

REM VARIABLES DECLARER
SET PATHDIR=G:\
SET MAXDAYS=17


REM SUPPRIME LES FICHIERS
forfiles /P %PATHDIR% /m *.* /D -%MAXDAYS% /C "cmd  /c del /q @path"

REM SUPPRIMER LES DOSSIERS
ForFiles /P "%PATHDIR%" /D -%MAXDAYS% /C "CMD /C if @ISDIR==TRUE echo RD /Q /S @FILE &RD /Q /S @path"
PAUSE





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message Programmation forfiles 
Bonjour
Désolé pour le retard de ma réponse...

je viens de tester la commande :

En l'etat cela me donne tous les arguments possibles pour FORFILES

alors je n'ai pas mis de variable (j'ai mis directement dans la commande le chemin et le nombre de jours) et j'ai cette réponse :

can't execute (error 2)
can't execute (error 2)
can't execute (error 2)
.
.
.
.

pour la commande :

@ECHO OFF

REM VARIABLES DECLARER
rem SET PATHDIR=G:\
rem SET MAXDAYS=18


REM SUPPRIMER LES FICHIERS
forfiles -PG:\ -s -m*.* -D-18 -C "cmd /c del /q @path"



REM SUPPRIMER LES DOSSIERS
forfiles -PG:\ -s -m*.* -D-18 -C "CMD /C if @ISDIR==TRUE echo RD /Q /S @FILE &RD /Q /S @path"
PAUSE


J'avoue être un poil découragé

Sachant que je dois aussi faire cette purge sur un serveur FTP...(linux je crois)

Mais ça, ce sera en suivant...

Merci



Répondre en citant
Message Programmation forfiles 
Bonjour
tu as modifié ton code, as tu testé le mien sans modification de ta part ?




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message Programmation forfiles 
Bonjour

Je crois que j'avais essayé la commande telle quelle; je viens de la refaire et voici le résultat :


D:\Mes Documents\ADMIN>testpurge.bat
FORFILES v 1.1 - by Emmanuel Boersma - 4/98


Syntax : FORFILES [-pPath] [-mSearch Mask] [-ccommand] [-dDDMMYY] [-s]

-pPath Path where to start searching
-mSearch Mask Search files according to <Search Mask>
-cCommand Command to execute on each file(s)
-d[+|-][DDMMYY|DD] Select files with date >= or <=DDMMYY (UTC)
or files having date >= or <= (current date - DD days)
-s Recurse directories
-v Verbose mode

The following variables can be used in Command :
@FILE, @PATH, @RELPATH, @ISDIR, @FSIZE, @FDATE, @FTIME


Default : <Directory : .> <Search Mask : *.*> <Command : "CMD /C Echo @FILE">
Examples :
FORFILES -pc:\ -s -m*.BAT -c"CMD /C Echo @FILE is a batch file"
FORFILES -pc:\ -s -m*.* -c"CMD /C if @ISDIR==TRUE echo @FILE is a directory"
FORFILES -pc:\ -s -m*.* -d-100 -c"CMD /C Echo @FILE : date >= 100 days"
FORFILES -pc:\ -s -m*.* -d-010193 -c"CMD /C Echo @FILE is quite old!"
Forfiles.exe
"Invite de commandes.lnk"
PartitionWizard
purge.vbs.old
purge.vbs.tropviolent
"SAUVE MIJ.bat"
"SAUVE SOIR.bat"
testpurge.bat
Appuyez sur une touche pour continuer...

D:\Mes Documents\ADMIN>



voici le contenu de testpurge.bat :

@ECHO OFF

REM VARIABLES DECLARER
SET PATHDIR=G:\
SET MAXDAYS=10


REM SUPPRIME LES FICHIERS
forfiles /P %PATHDIR% /m *.* /D -%MAXDAYS% /C "cmd /c del /q @path"

REM SUPPRIMER LES DOSSIERS
ForFiles /P "%PATHDIR%" /D -%MAXDAYS% /C "CMD /C if @ISDIR==TRUE echo RD /Q /S @FILE &RD /Q /S @path"
PAUSE



Un doliprane ?

Merci pour tes efforts

Mathias



Répondre en citant
Message Programmation forfiles 
Je viens de regarder a nouveau la commande : ça ne pose pas de problème de mettre un / à la place du - ?

J'ai peur que forfiles ne marche qu'avec les fichiers et pas les dossiers Crying or Very sad



Message Programmation forfiles 


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