Probleme copie xcopy via date

methylene -  
 methylene -
Bonjour,

Décidément je pose beaucoup de questions en ce moment, mais rien en marche. J'ai fait un programme, qui à l'aide de la date actuelle, va copier tous les fichiers modifiés à la date - 1 mois d'un répertoire vers un autre répertoire, en ne copiant que les fichiers non présents ou ceux modifiés.

Le souci, c'est que pour la date via l'ordinateur en 2010 il ne copie rien, alors que si je passe ma date ordinateur en 2009 il copie alors mes fichiers, pourquoi ?

Voici les fichiers présent dans mon répertoire source :

nom : FichierA.pptx taille : 580ko date de modification : 06/02/2010 09.22
nom : FichierB.rtf taille : 320ko date de modification : 20/01/2010 14.39
nom : FichierC.docx taille : 711ko date de modification : 03/02/2010 11.45
nom : FichierD.doc taille : 19ko date de modification : 10/02/2010 16.37

Voici le programme :

Set jour=%date:~0,2%
Set mois=%date:~3,2%
Set annee=%date:~6,4%
Set lol=%mois:~0,1%


If "%lol%"=="0" Set mois=%mois:~1%

Set /a varmois=%mois%-1

@ echo off

if "%varmois%"=="0" set varmois=12
if "%varmois%"=="12" set /a annee=%annee%-1
if "%varmois%"=="1" set varmois=01
if "%varmois%"=="2" set varmois=02
if "%varmois%"=="3" set varmois=03
if "%varmois%"=="4" set varmois=04
if "%varmois%"=="5" set varmois=05
if "%varmois%"=="6" set varmois=06
if "%varmois%"=="7" set varmois=07
if "%varmois%"=="8" set varmois=08
if "%varmois%"=="9" set varmois=09

set vardate=%jour%-%varmois%-%annee%

@ echo %vardate%

pause


xcopy D:\dossierA\*.* D:\dossierB\*.* /d:%vardate% /y /i

pause

Quand je lance mon programme, avec la date d'aujourd'hui par exemple, date = 05/03/2010, et donc vardate = 05/02/2010, je devrais donc avoir dans mon dossierB :

fichierA et fichierB

Mais il ne copie rien pourquoi, alors que si date = 05/03/2009 (soit une année en arrière) il copie les 4 fichiers ?

Merci de vos réponses.

6 réponses

dubcek Messages postés 19025 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
il y a effectivement une différence entre help xcopy et l'aide dans démarrer -> Aide et support -> Références de A à Z de la ligne de commande -> xcopy
1
methylene
 
Même quand je force la date dans un simple .bat

xcopy D:\MSSQLBIS\dossierA\depar\*.* D:\MSSQLBIS\dossierB\arriv\*.* /D:05/02/2010 /y /i

Ca ne marche pas.

Alors que :

xcopy D:\MSSQLBIS\dossierA\depar\*.* D:\MSSQLBIS\dossierB\arriv\*.* /D:05/02/2009 /y /i

Peut-être qu'il ne compare que les années, je ne comprend plus rien.
0
methylene
 
J'ai fait un autre test :

date ordinateur 05/03/2009 donc vardate 05/02/2009

Dans D:\MSSQLBIS\dossierA\depar\ j'ai mis :

nom : FichierE.docx taille : 711ko date d emodification 08/02/2009 11.55
nom : FichierA.pptx taille : 580ko date de modification : 06/02/2010 09.22
nom : FichierB.rtf taille : 320ko date de modification : 20/01/2010 14.39
nom : FichierC.docx taille : 711ko date de modification : 03/02/2010 11.45
nom : FichierD.doc taille : 19ko date de modification : 10/02/2010 16.37

Quand j'exécute mon programme, il me copie les 4 fichiers de 2010, et pas celui de 2009, qu'il devrait normalement copier.

Conclusion : Xcopy .............. ............... D:date ne compare que l'année ...

Y a-t-il quelquechose que je fais mal pour qu'il ne compare pas la date intégrale ?
0
dubcek Messages postés 19025 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
hello
le format de la date dans xcopy est : /d[:mm-jj-aaaa]
tu utilises =%jour%-%varmois%-%annee%
0
methylene
 
Heuresement que tu es tjs là pour résoudre mon problème, et dommage que je n'ai pas regardé un peu plus tôt ici pour voir ta réponse, et ayant passé la matinée à me creuser la tête j'ai fini par trouver le problème du format date, et pourtant, je te poste la remarque (concernant le format date) que j'ai posté sur un autre forum ou j'avais posté la même question, si tu as une explication je suis curieux :).

Bon ben voilà, pourquoi je trouve vraiment que windows c'est de la merde :

Dans l'invite de commande :

[quote]C:\date
La date du jour est : 05/03/2010
Entrez la nouvelle date du jour : (jj-mm-aa)
C:\[/quote]

Ou encore :

[quote]C:\help xcopy
/D : j-m-a[/quote]

Donc le format de la date, [B]jour-mois-année[/B]

Maintenant j'éxécute une commande toute bête

[quote]C:\xcopy "D:\testd\*.*" "D:\testa\*.*" /d:29-12-2009 /y /i
[B]Paramètre non valide - /d:29-12-2009[/B][/quote]

Enfin :

[quote]C:\xcopy "D:\testd\*.*" "D:\testa\*.*" /d:12-29-2009 /y /i
1 fichier(s) copié(s)[/quote]

Conclusion format date : [B]mm-jj-aaaa pour la fonction xcopy [/B](je ne sais pas d'où cela vient soit dit en passant).


Correction de mon code :

[quote]vardate=[COLOR="SeaGreen"]%varmois%-%jour%[/COLOR]-%annee%[/quote]

Si quelqu'un à un avis sur la question, j'ai du perdre plus de 4h avec ce problème ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
methylene
 
Et les balises HTML qui ne sont pas actives, snif ...
0
methylene
 
Bien le merci pour tes réponses précises et explicites.
0