France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 521 membres enregistrés - 2 069 420 posts - 122 057 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Sujets divers
                DOS: purge de fichiers vieux de plus de 30 jours
54 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
1,2 | Suivant
DOS: purge de fichiers vieux de plus de 30 jours

@toto@


Messages : 152
Inscrit le 15/11/04
Non connecté
  Posté le 12 July 2005 - 12 h 01 m 08 s
J'ai un petit problème:
http://forums.france-hardware.com/disc/windows/applications_logiciels/sujet-67372-0.html#1549362

Pour résumer: comment effacer (depuis script dos) des fichier plus vieux que 30 ou 31 jours
J'ai des pistes ...
merci




Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 617
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 12 July 2005 - 15 h 54 m 59 s
Je verrais bien un pretit programme en C/Java/Ada/Cobol qui prend deux arguments date en ligne de commande, les compare, et retourne une valeur différente selon la comparaison.
Après, il n'y a plus qu'à analyser le errorlevel.



Huile de fraise.

@toto@


Messages : 152
Inscrit le 15/11/04
Non connecté
  Posté le 12 July 2005 - 16 h 14 m 32 s
mouaiche, sauf que je dois utiliser le DOS (ou le Vbs, mais là connais pas).




Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 617
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 12 July 2005 - 16 h 14 m 36 s
Voilà, en prenant ce code Java pour base par exemple :


import java.util.Date;
import java.text.DateFormat;

public class ComparateurDates {

public static void main(String[] args) {
if (args.length == 2) {
DateFormat df = DateFormat.getDateInstance();
try {
Date date1 = df.parse(args[0]);// new Date(args[0]);
Date date2 = df.parse(args[1]);
int diff = date1.compareTo(date2);

// diff = 0 si negatif, 1 si egal, 2 si positif
diff += 1;

System.exit(diff);
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("usage: java ComparateurDates date1 date2");
System.exit(Integer.MAX_VALUE);
}
}
}


edit : ah zut

des spécialistes en VBS :pasmoi: ?


Message édité 1 fois, la dernière par Petit_PimoOosE le 12 July 2005 - 16 h 16.

Huile de fraise.

gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 12 July 2005 - 16 h 31 m 48 s
Bah, sinon, je me répete, mais y a Ant pour ca ;)

http://ant.apache.org



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


@toto@


Messages : 152
Inscrit le 15/11/04
Non connecté
  Posté le 12 July 2005 - 16 h 38 m 57 s


Le 12 juillet 2005 - 16 h 31, gege38 a écrit :
Bah, sinon, je me répete, mais y a Ant pour ca ;)

http://ant.apache.org


...en même temps c'est pas vraiement ce que je recherche :D




Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 12 July 2005 - 17 h 50 m 55 s
Es-tu sous MS-DOS reellement ou seulement un batch sous un windows Win32? Car dans ce cas Cygwin pourrait peut-etre t'aider dans ton script.

http://www.cygwin.com



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 617
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 12 July 2005 - 17 h 53 m 13 s
Ah ouais mais là faut taper dans le script shell alors :hot:

edit : et j'imagine que c'est un batch qui va tourner sur plusieurs machines en même temps, d'où la demande d'un fichier unique sans dépendance ?


Message édité 1 fois, la dernière par Petit_PimoOosE le 12 July 2005 - 17 h 53.

Huile de fraise.

bernie38
Waldorf (le pote à Statler)

Messages : 11 452
Inscrit le 28/08/03
Ville : Claix
Non connecté
  Posté le 12 July 2005 - 20 h 16 m 45 s


Le 12 juillet 2005 - 17 h 53, Petit_PimoOosE a écrit :
Ah ouais mais là faut taper dans le script shell alors :hot:

edit : et j'imagine que c'est un batch qui va tourner sur plusieurs machines en même temps, d'où la demande d'un fichier unique sans dépendance ?

ça existe pas find -mtime sous ligne de commande windows ? :D



La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire


@toto@


Messages : 152
Inscrit le 15/11/04
Non connecté
  Posté le 13 July 2005 - 09 h 43 m 06 s


Le 12 juillet 2005 - 20 h 16, bernie38 a écrit :
ça existe pas find -mtime sous ligne de commande windows ? :D


le commutateur mtime ne fonctionne pas chez moi, quel version de dos utilises tu?
Mais ça m'a l'air d'être une bonne piste ça.

sinon pour les autres pistes, je ne veux pas me compliquer la vie ni ajouter quoique ce soit sur les serveurs (je dois demander si c'est valider au niveau corp, ça doit être testé, attendre 10 milles signatures... pas très souple)


Message édité 1 fois, la dernière par @toto@ le 13 July 2005 - 09 h 45.


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 13 July 2005 - 10 h 03 m 29 s
Il fait allusion à la version Unix de find :yes: :

http://linux.ctyme.com/man/man0763.htm

Mais j'ai trouve ça avec google:

http://www.computerhope.com/findhlp.htm

ce qui à la reflexion m'a plutot l'air d'une recherche de texte...


Message édité 2 fois, la dernière par Gosseyn le 13 July 2005 - 10 h 07.

"Si vous perdez, ne perdez pas la leçon."
Gosseyn


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 13 July 2005 - 10 h 18 m 53 s
Re,

Il y a longtemps que je n'ai pas travaillé avec DOS mais il me semble qu'il y a une commande ATTRIB qui gere les attributs, peut etre gere-t-elle la date du fichier aussi. Sinon il y a une commande 'stat' mais je ne sais plus si elle existe sous DOS.



"Si vous perdez, ne perdez pas la leçon."
Gosseyn


@toto@


Messages : 152
Inscrit le 15/11/04
Non connecté
  Posté le 13 July 2005 - 10 h 50 m 21 s
non malheureusement.

Mais j'ai peut être trouvé une parade (c'est carrement tordu quand même lol).

dans mon batch:
- je lance la création d'un répertoire
- dans ce répertoire, je copie tous les fichiers à partir de la date du jour - 30 jours en supprimant le fichier source: avec xcopy je peux faire tout ça.
- et enfin j'efface le répertoire nouvellement créé avec tout son contenu

edit: marche pas car avec xcopy on copie les fichier à partir de la date indiquée
...ah merdouille, c'est chiant de se prendre la tête sur des petites conneries !!!


Message édité 1 fois, la dernière par @toto@ le 13 July 2005 - 10 h 55.


Gosseyn


Messages : 286
Inscrit le 24/01/05
Ville : Grenoble
Non connecté
  Posté le 13 July 2005 - 11 h 30 m 25 s
hmmm, il est peut-etre temps de ce mettre à vbs...

As-tu poster sur un newsgroup dédié à DOS? genre fr.comp.os.msdos ou comp.os.msdos.*

just in case la FAQ de fr.comp.os.msdos:
http://www.chez.com/scudo/Faq/dos/


Message édité 1 fois, la dernière par Gosseyn le 13 July 2005 - 11 h 32.

"Si vous perdez, ne perdez pas la leçon."
Gosseyn


bernie38
Waldorf (le pote à Statler)

Messages : 11 452
Inscrit le 28/08/03
Ville : Claix
Non connecté
  Posté le 13 July 2005 - 19 h 48 m 43 s


Le 13 juillet 2005 - 11 h 30, Gosseyn a écrit :
hmmm, il est peut-etre temps de ce mettre à vbs...

As-tu poster sur un newsgroup dédié à DOS? genre fr.comp.os.msdos ou comp.os.msdos.*

just in case la FAQ de fr.comp.os.msdos:
http://www.chez.com/scudo/Faq/dos/

VBS :roll: tant qu'à faire, autant écrire ça en basic "de base".
et sinon, cygwin, c'est pour les pingouins ?

quoiqu'il en soit, on se rend bien compte avec ce petit exemple que ms-dos a été écrit comme une pale copie (je pèse mes mots) d'Unix... Même que je me suis laissé dire que DOS ça voulait dire "Dirty Operating System". Parce que si on peut pas faire en ligne de commande un truc aussi simple, alors là :nrv:



La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 617
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 13 July 2005 - 20 h 53 m 20 s


Le 13 juillet 2005 - 10 h 50, @toto@ a écrit :
non malheureusement.

Mais j'ai peut être trouvé une parade (c'est carrement tordu quand même lol).

dans mon batch:
- je lance la création d'un répertoire
- dans ce répertoire, je copie tous les fichiers à partir de la date du jour - 30 jours en supprimant le fichier source: avec xcopy je peux faire tout ça.
- et enfin j'efface le répertoire nouvellement créé avec tout son contenu

edit: marche pas car avec xcopy on copie les fichier à partir de la date indiquée
...ah merdouille, c'est chiant de se prendre la tête sur des petites conneries !!!

et si tu copies les fichiers à partir de la date indiquée, que tu supprimes l'ancien répertoire et que tu renommes le nouveau ?

bernie> voyons, voyons ;)
apparemment, installer Cygwin ne serait pas une tâche administrative simple...
Quant à DOS, c'était un plaisir pour les Demo-makers :P



Huile de fraise.

kha
Google is your best friend

Messages : 1 236
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 14 July 2005 - 03 h 33 m 15 s
NB: jsais pas quel topic est bon : p-e faudrait locker un des deux ?

En batch tu peux faire des comparaison.

Le gros pb est + pour les dates : comment soustaire deux date, celle que tu recupere du fichier et celle courante. En batch rien ne fait ca.

La date des fichier peut etre recuperee avec dir /? et parsee avec les tilde.

Fais un for /?, if /?, dir /? dans la commande.

http://labmice.techtarget.com/articles/batchcmds.htm
Regarde a l operateur IF

Le WSH est mieux pour ca. un script VBS ou JS ferait l affaire. Et pas besoin d installer quoi que ce soit.




kha
Google is your best friend

Messages : 1 236
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 14 July 2005 - 03 h 48 m 08 s
quand tu dis vieux de 30 jours :

c est qu ils ont ete crees ya 30 jours ou accede dernierement ya 30 jours ?




kha
Google is your best friend

Messages : 1 236
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 14 July 2005 - 05 h 32 m 06 s
Voila une petite PoC : prend ce que tu as besoin de la.

FICHIER: diff.vbs
LANCEMENT: cscript //nologo diff.vbs <days> <file>

    Code     
 1. ' FROM http://www.paulsadowski.com/WSH/utils.htm
 2. ' AND VBScript Language Reference
 3. 
 4. Option Explicit
 5. 
 6. Const OK = "0"
 7. Const NOK = "-1"
 8. 
 9. Dim Diff
10. dim Filename
11. 
12. Dim FileCreatedDate
13. Dim FileLastAccessedDate
14. Dim FileLastModifiedDate
15. 
16. Dim FileCreatedDiff
17. Dim FileLastAccessedDiff
18. Dim FileLastModifiedDiff
19. 
20. if WScript.Arguments.Count = 2 then
21.     
22.     Diff = CInt(WScript.Arguments(0))
23.     Filename = WScript.Arguments(1)
24. 
25.     FileCreatedDate         = FileCreated(Filename)
26.     FileLastAccessedDate    = FileLastAccessed(Filename)
27.     FileLastModifiedDate    = FileLastModified(Filename)
28.     
29.     FileCreatedDiff         = CInt(DateDiff("d", CDate(FileCreatedDate), Now))
30.     FileLastAccessedDiff    = CInt(DateDiff("d", CDate(FileLastAccessedDate), Now))
31.     FileLastModifiedDiff    = CInt(DateDiff("d", CDate(FileLastModifiedDate), Now))
32.     
33.     WScript.Echo "[DEBUG] Comparing with " & Diff & " days"
34.     WScript.Echo "[DEBUG] FileCreated="         & FileCreatedDate       & ", Diff=" & FileCreatedDiff
35.     WScript.Echo "[DEBUG] FileLastAccessed="    & FileLastAccessedDate  & ", Diff=" & FileLastAccessedDiff
36.     WScript.Echo "[DEBUG] FileLastModified="    & FileLastModifiedDiff  & ", Diff=" & FileLastModifiedDiff
37.     
38.     'Choose the one you need
39.     WScript.Echo FileCreatedDiff < Diff
40.     WScript.Echo FileLastAccessedDiff < Diff
41.     WScript.Echo FileLastModifiedDiff < Diff
42.       
43. else
44.     WScript.Echo "Usage: cscript //nologo diff.vbs <days> <file>" & vbCrLf & "Display 0 if NOW - FILEDATE >= days"
45. end if
46. 
47. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
48. 
49. 'Return the date/time a file was created
50. Function FileCreated(Fname)
51.     Dim fs
52.     FileCreated = ""
53.     Set fs = CreateObject("Scripting.FileSystemObject")
54.     if fs.FileExists(Fname) = True then
55.         FileCreated = fs.GetFile(Fname).DateCreated
56.     end if
57.     Set fs = Nothing
58. end function
59.  
60. 'Return the date a file was last accessed
61. Function FileLastAccessed(Fname)
62.     Dim fs
63.     FileLastAccessed = ""
64.     Set fs = CreateObject("Scripting.FileSystemObject")
65.     if fs.FileExists(Fname) = True then
66.         FileLastAccessed = fs.GetFile(Fname).DateLastAccessed
67.     end if
68.     Set fs = Nothing
69. end function
70.  
71. 'Return the date/time a file was last modified
72. Function FileLastModified(Fname)
73.     Dim fs
74.     FileLastModified = ""
75.     Set fs = CreateObject("Scripting.FileSystemObject")
76.     if fs.FileExists(Fname) = True then
77.         FileLastModified = fs.GetFile(Fname).DateLastModified
78.     end if
79.     Set fs = Nothing
80. end function




kha
Google is your best friend

Messages : 1 236
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 14 July 2005 - 05 h 33 m 51 s
Example :
D:\dload>cscript //nologo diff.vbs 94 "mp3\DANCE starcelor-for to the floor(1).mp3"
[DEBUG] Comparing with 94 days
[DEBUG] FileCreated=10/04/2005 12:01:00, Diff=94
[DEBUG] FileLastAccessed=21/05/2005, Diff=53
[DEBUG] FileLastModified=111, Diff=111
0
-1
0

D:\dload>




1,2 | Suivant
Page genérée en 0.3357 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory