2010-07-30 7 views
3

Je dois vérifier dans un répertoire externe si un seul fichier (exemple.avi) est modifié/créer aujourd'hui et si la réponse est oui, commencer un autre lot ou quitter.lot à vérifier si un seul fichier est modifié

J'ai trouvé plusieurs messages mais je ne suis pas en mesure de faire ce fichier par moi-même.

J'espère que quelqu'un peut m'aider. Je vous remercie à l'avance.

Répondre

1

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.

+0

la sortie est: cdate = "" mdate = "" courant dir = C: \ et myprogram.bat commence également si le fichier est vieux – Todd

+0

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

+0

le résultat est: "01/08/2010" – Todd

0
DIR %1 | FIND /I "%1" > ~ISMODIF.TMP 
ECHO.>> ~ISMODIF.TMP 
TYPE ~ISMODIF.TMP | TIME | FIND /I "%1" > ~ISMODIF.BAT 
ECHO SET CHKDATE=%%4> ENTER.BAT 
CALL ~ISMODIF.BAT 
DIR ~ISMODIF.BAT | FIND /I "~ISMODIF.BAT" > ~ISMODIF.TMP 
ECHO.>> ~ISMODIF.TMP 
TYPE ~ISMODIF.TMP | TIME | FIND /I "~ISMODIF.BAT" > ~ISMODIF.BAT 
ECHO SET NOWDATE=%%4> ENTER.BAT 
CALL ~ISMODIF.BAT 
IF "%NOWDATE%"=="%CHKDATE%" ECHO %1 was created or modified today 

De http://www.robvanderwoude.com/bht.php.

+0

Merci, mais malheureusement, je ne suis pas un programmeur et je ne sais pas où mettre le nom de fichier à vérifier, puis démarrer un autre programme. – Todd

1

Je l'ai trouvé mais ne fonctionne pas sur mon Win XP.

@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 

if "%cdate%"=="%mdate%" start myprogram.bat 
+0

s'il vous plaît ajouter 4 places devant les lignes de code – wimh

Questions connexes