Le script que vous avez trouvé me semble valide, si vous démarrez de nouvelles lignes à la bonne position. Vous pouvez ajouter une instruction echo avant l'instruction if pour voir si cdate et mdate ont une valeur correcte. Et vérifiez si myprogram.bat existe dans le répertoire. Voici une version modifiée qui montre cela. Pouvez-vous essayer cela, et publier la sortie si cela ne fonctionne pas?
@echo off
for %%F in (C:\TEST\myfile.avi) do (for /F %%D in ("%%~tF") do (set mdate=%%D))
for /F "tokens=2" %%D in ('date/t') do set cdate=%%D
echo cdate="%cdate%" mdate="%mdate%" current dir=%cd%
if "%cdate%"=="%mdate%" going to start myprogram.bat
if "%cdate%"=="%mdate%" start myprogram.bat
pause
modifier Voici une version qui fonctionne indépendamment des paramètres régionaux. Il est basé sur la solution this.
@echo off
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f > NUL
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyMMdd" /f > NUL
for %%F in (C:\TEST\myfile.avi) do (for /F %%D in ("%%~tF") do (set mdate=%%D))
for /F "tokens=1" %%D in ("%date%") do set cdate=%%D
echo cdate="%cdate%" mdate="%mdate%" current dir=%cd% date="%date%"
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f > NUL
if "%cdate%"=="%mdate%" start myprogram.bat
Il effectue d'abord une sauvegarde du format de la date d'émission dans le registre. Ensuite, il le remplace par yyMMdd. Maintenant, il cherche la date de modification du fichier et la date actuelle. avant de comparer les dates, il restaure le format shortdate.
la sortie est: cdate = "" mdate = "" courant dir = C: \ et myprogram.bat commence également si le fichier est vieux – Todd
probablement vous avez différents paramètres régionaux alors j'ai. pouvez-vous entrer 'echo"% date% "' dans une invite de commande, et afficher le résultat ici? – wimh
le résultat est: "01/08/2010" – Todd