Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

bloodyxdeath

Besoin d'aide pour *.bat

Messages recommandés

Salut tout le monde !!

 

Voila j'aurai besoin d'un script qui efface ce que contient un dossier, mais seulement ce qui est anterieur a 15 jours, je n'ai jamais fait ce genre de chose et pour le moment je n'ai que ca :

 

cd /
cd /repertoire
del *.* /Q

 

Mais pour ce qui est de la date, je ne sais pas comment faire pourriez vous m'aider ?

 

Merci d'avance :P

Modifié par bloodyxdeath

Partager ce message


Lien à poster
Partager sur d’autres sites

Il me semble pas que ça soit possible en batch, mais tu dois pouvoir faire un script avec WSH (renseigne toi sur http://www.microsoft.com/france/scripting/ )

 

Si ma mémoire est bonne, il faut utiliser Scripting.FileSystemObject, GetFile puis l'attribut DateCreated du fichier.

 

Si tu y connais rien (parce que c'est pas automatique : il faut tester chaque fichier...) je pourrai te faire ça quand j'aurai le temps (mais là j'ai le bac de français à réviser... argh)

Modifié par leneuf22

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour savoir c'est sous 9x/ME ou sous 2000/XP, les possibilités Batchs de ces versions de windows ne sont pas les même avec une nette supériorité pour le Batch 2000/XP

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait c'est sous Windows Server 2003...

Leneuf, t'as solution me parait "compliqué" dans le sens ou j'ai tre speu de tps pour faire ca devant moi, n'y a t'il vraiment pas moyen en *.bat ?!

Partager ce message


Lien à poster
Partager sur d’autres sites

avec un environnement NT si il y a moyen mais là j'ai rien sous le coude en procedure complête ou déjà écrite éventuellement un squelette :

1_utilisation de dir avec les elements de recherche (fichier de plus de 15j) resultat dans un fichier

2_utilisation de dir sans les elements de recherche resultat dans un fichier

3_ ensuite utilisation d'un boucle for pour valider l'existence d'une ligne dans les 2 fichiers si oui suppression, et si non on fait rien

Partager ce message


Lien à poster
Partager sur d’autres sites

je vois ce que tu veux dire a peu pres, en algo je pourrai peut etre m'en sortir, mais je ne sais pas comment ecrire dans le *.bat :

 

Si "la date de creation est superieur a 15 jours" alors

et encore moins la boucle pour...

 

Sauf si c'est comme en C, la je pourrais eventuellement me debrouiller ! ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

B'Jour,

 

les solutions en DOS existent mais c'est du lourd de lourd pour aller récupérer la date de chaque fichier ! :P Mieux vaudrait, comme dit plus haut, passer par autre chose. Peut-être vas-tu trouver ton bonheur là :

http://www.robvanderwoude.com/index.html ?

 

Pas le temps de chercher l'éventuel bon dans le tas ... J'ai trouvé dans les 1ères pages données par Google en entrant : batch+DOS+date

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok, mais si je veux le faire dans un autre langage, c'est tjrs le mm probleme, par exemple en C, je ne sais pas du tout comment recuperer la date de creation du fichier ou ce genre de chose ... j'aurais vraiment cru que ca aurait ete plus simple :'(

Partager ce message


Lien à poster
Partager sur d’autres sites

En C sous Windows tu as GetFileTime (#include <Windows.h>)

Le prototype :

BOOL GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);

typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *LPFILETIME;

BOOL FileTimeToSystemTime(const LPFILETIME lpFileTime, LPSYSTEMTIME lpSystemTime);

typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *LPSYSTEMTIME;

 

Je crois que j'ai presque tout dit :P

 

Tu auras plus d'infos sur http://msdn.microsoft.com/

 

 

C'est vrai que c'est beaucoup moins lourd à faire en C qu'en script, VBS ou autres...

Modifié par leneuf22

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×