Forum Clubic

Déplacer fichier avec MS DOS - En fonction d'une date

Bonjour,
je souhaiterais créer un .bat (MS DOS) ayant pour fonction le déplacement de fichiers dont la date est de plus de 10 jours, donc pas en fonction d’une date précise mais d’un nombre de jours.
Ceci d’un répertoire A vers un autre B sur le même pc.
Merci.

Manipuler des dates avec un .bat, ce n’a rien d’évident
As-tu regardé du côté du VBS ?

euhh, je veux bien t’aider, mais le probleme c’est de savoir tu utilise reelement ms-dos (je parle ici de la version 6.22)
ou juste celle emulée par windows?

Merci pour vos réponses.

Je regarde effectivement avec VB Script, je connais pas trop mais je regarde. J’ai trouvé pour déplacer des fichiers mais pas encore en fonction d’une date ni trouver pour vérifier l’existence de ceux ci dans le fichier source comme celui de destination.

Je pense que c’est la version Dos la plus simple celle de Windows, c’est pour pour un PC situé géographiquement très loin de chez moi, l’utilisateur ne connais rien et en plus il a des droits limités, pas évident !

Le mieux que tu aies à faire, c’est de lister un par un les fichiers du répertoire source
(for each fic in …)
de regarder sa date (fic.DateLastModified) et si ele est inférieure à ta balise de 10jours courants, de déplacer ton fichier.

Si tu ne veux pas avoir d’erreur fichier déjà existant, tu copies puis tu effaces l’original

regardes du coté de l’utilitaire “robocopy”

commutateurs interessants :

/MAXAGE:{jours | YYYYMMDD} : exclue les fichiers dont la date de dernière modification est plus ancienne que celle spécifiée.
/MINAGE:{jours | YYYYMMDD} : exclue les fichiers dont la date de dernière modification est plus récente que celle spécifiée.
/MAXLAD:{jours | YYYYMMDD} : exclue les fichiers dont la date de dernière modification est plus ancienne que celle spécifiée.
/MINLAD:{jours | YYYYMMDD} : exclue les fichiers dont la date de dernière modification est plus récente que celle spécifiée.

exemple : robocopy.exe "dossier_source" "dossier_dest" /r:1 /w:1 /minlad:20070405 /e

en résumé ca regarde dans le dossier source les fichiers antérieur au 5 avril 2007 et les déplacent dans le répertoire destination.

en esperant que ca puisse t aider.

http://www.ac-creteil.fr/reseaux/systemes/…ls/robocopy.htm

Merci à tous.
J’ai finalement opté pour VB Script avec ca :
rep1 = “C:\A”
rep2 = “C:\B”

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(rep1)
Set fFichiers = f.Files

For Each fTemp In fFichiers
If DateDiff(“d”, fTemp.DateLastModified, Date) > 10 Then
Set Ftxt = fs.GetFile(rep1 & “\” & fTemp.Name) 'Fichier origine
Ftxt.Move (rep2 & “\” & fTemp.Name)
End If
Next

Il ne me reste plus qu’a trouver comment les déplacer en les écrasant si ils existent.

Merci.

Au lieu d’un Move, tu fais un Copy, avec l’argument Overwrite à true pour écraser un éventuel fichier existant dans la cible
Ensuite tu fais un Delete sur ton fichier source

+1 pour robocopy :slight_smile:
il permet de faire des sauvegardes incrémentielles dans ton cas ou bien des phases miroirs

Super, merci.

Il ne me reste plus qu’a exporter cette macro pour l’envoyer à l’utilisateur final.
Connaissez vous le moyen le plus simple pour l’exporter sans que l’utilisateur n’est quoi que ce soit à installer, peut on faire un exe.
J’ai fais cette macro avec visual basic editor via excel.

Merci

Tu copies la totalité de ton code dans un editeur de texte (notepad par ex) et tu le sauves sous un nom à ta convenance, avec l’extension .vbs
Pas besoin de compilation, windows devrait savoir interpréter directement.
L’utilisateur n’a plus qu’à le mettre en lieu sûr et à créer son raccourci.
Attention quand même à rep1 et rep2 qui sont décrits en dur dans le programme.
Tu aurais peut-ête intérêt à les transformer en arguments de ligne de commande, et à fixer leur valeur dans le raccourci.

Merci beaucoup.

Ca marche, je serais vendredi si ca marche chez l’utilisateur final.

:clap: