Bonjour,
Je reposte ici, car je crois avoir posté dans la mauvaise section auparavant. 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 ?
Problème
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 :
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 :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:\MSSQL\dossierA\*.* D:\MSSQL\dossierB\*.* /d:%vardate% /y /i
pause
fichierA
fichierB
Mais il ne copie rien pourquoi, alors que si date ordinateur = 05/03/2009 (soit une année en arrière) il copie les 4 fichiers ?
Test1
Même quand je force la date dans un simple .bat
Ca ne marche pas.xcopy D:\MSSQLBIS\dossierA\depar\*.* D:\MSSQLBIS\dossierB\arriv\*.* /d:05-02-2010 /y /i
Alors que :
Là il me copie bien mes fichiers.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.
Test2
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 ? Est-ce la fonction Xcopy /d:date qui ne fonctionne pas?
Sinon si vous voyez une façon plus simple de faire ce que je cherche à faire, par exemple en vbs or idk, n'hésitez pas.
Merci de vos réponses.
Partager