|
|
|
|
Bonjour,
J'ai un léger souci sur un programme batch que j'essaye de mettre en œuvre.
Je veux, grâce a ce programme, remplacer des fichiers de backup seulement si la date de modification est différente, et sinon ne rien faire. j'arrive déjà a trouver les date de modif et à les mettre dans des variables mais j'ai un problème avec la condition IF.
(je suis très novice en batch)
Voici le code que j'ai pour le moment :
debut du code
@echo off
for /F "tokens=1-4 delims=/ " %%A in ('date /t') do (set JJ=%%A&set MM=%%B&set AA=%%C&set RESTE=%%D)
set ANNEE=%AA%
set MOIS=%MM%
set JOUR=%JJ%
//***********recherche des dates de modification*****************\\
dir /TW C:\TEST | find "TEST.txt" /i > C:\TEMP\temp.txt
for /F "tokens=1 delims= " %%i in (C:\TEMP\temp.txt) do set VERI1=%%i
dir /TW C:\BACKUP\%ANNEE%\%MOIS%\%JJ%\ | find "TEST.txt" /i > C:\TEMP\temp2.txt
for /F "tokens=1 delims= " %%i in (C:\TEMP\temp2.txt) do set VERI2=%%i
if "VERI1" NEQ "VERI2" (XCOPY "C:\TEST\"*.*/s/y C:\BACKUP\%ANNEE%\%MOIS%\%JJ%\)
exit
fin du code
Ici ; que la condition soit vérifiée ou non il copie quand même les fichiers
Y'a t-il un crack en programmation DOS qui pourrait me venir en aide ?
Configuration: Windows XP Firefox 3.0.3
Alors ... vu que c'était vraiment simple et que je ne vous ai pas donné beaucoup de travail, je vais corser la chose.
|
A ma connaissance il n'existe pas de fonction MS-DOS sous XP permettant d'effectuer des opérations sur les heures ou sur les dates. A vérifier quand même. Dans l'ignorance je te propose ce qui suit :
cls
SET "cur_date=%DATE:~0,2%/%DATE:~3,2%/%DATE:~6,4%"
rem Sauvegarde de l'horaire courant.
SET "TTIME=%TIME%"
rem Pour test
SET "TTIME=11:59 00"
rem ------------------------
rem Restauration éventuelle du zéro manquant en tête d'un horaire dont le nb.
rem d'heures est inférieur à 10. Ex: 0:39:01,51
IF "%TTIME:~0,1%" == " " (
SET "TTIME=0%TTIME:~1,8%" )
SET "cur_time=%TTIME:~0,2%:%TTIME:~3,2% %TTIME:~6,2%"
rem Pour test :
IF "%cur_date%" == "06/11/2008" (
ECHO OK
ECHO cur_date %cur_date% )
IF "%cur_time%" == "11:59 00" (
ECHO OK
ECHO cur_time %cur_time% )
rem ------------------------
Ce qui m'intéresserai maintenant c'est de pouvoir comparer exactement cette date et cette heure à la date et l'heure actuelle ... je suppose qu'une fonction ressemblant a "explode" utilisée en php pourrait sans doute faire ce travail. - Je n'ai pas très bien compris pourquoi tu souhaites comparer "exactement" l'horaire actuelle avec celle du fichier. - Pour illustrer le problème j'ai mis en "dur" dans les IF, la date et l'horaire du fichier. J'espère que ça correspond à ton attente. Effectue des tests de ton côté, tiens-moi informé. Cordialement. Cchristian. |
Oh merci beaucoup ! quel rapidité :)
|
Salut
|