2016-04-08 8 views
0

Ich muss eine Batch-Dateien-Ausführung basierend auf dem Datumsstempel einer Datei verzweigen. Grundsätzlich gibt es eine Datei, die einmal am Tag erstellt werden muss, zu jeder Zeit an diesem Tag.Batch-Datei wenn Anweisung basierend auf dem Datumsstempel der Datei

Pseudocode

if (last modified date stamp of c:\temp\file1.txt) equals (current date) then goto TaskSucceeded else goto TaskFailed :TaskFailed echo "Task Failed" exit /B :TaskSucceeded echo "Task Succeeded" exit /B

Jede Hilfe würde geschätzt.

Antwort

1

Diese .bat für 1 min wartet prüft dann den Tag, und führt dann eine Aktion Ich habe es von HERE

Sie können die Zeit einmal alle 24 Stunden ändern und die CALL Dateien mit denen Sie ersetzen wollen rufen

@ECHO OFF 

:LOOP 
ECHO Waiting for 1 minute... 
PING -n 60 127.0.0.1>nul 
IF %DATE:~0,3%==Mon CALL SomeOtherFile.cmd 
IF %DATE:~0,3%==Tue CALL SomeOtherFile.cmd 
IF %DATE:~0,3%==Wed CALL SomeOtherFile.cmd 
IF %DATE:~0,3%==Thu CALL WootSomeOtherFile.cmd 
IF %DATE:~0,3%==Fri CALL SomeOtherFile.cmd 
IF %DATE:~0,3%==Sat ECHO Saturday...nothing to do. 
IF %DATE:~0,3%==Sun ECHO Sunday...nothing to do. 
GOTO LOOP 

lesen Sie mehr über die Datumsfunktion in .bat

+0

Ich bemerkte gerade, dass es etwas von meinem Pseudocode herausgenommen hat. Ich brauche es tatsächlich, um es in irgendeinem (beliebigen) numerischen Datumsformat mit HEUTE zu vergleichen. Wenn filedate = heute, dann tu etwas, sonst tu etwas anderes. wenn Datumsstempel von Datei1 = heutiges Datum usw. – getut

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "filename1=%sourcedir%\q36498808.txt" 
FOR %%a IN ("%filename1%") DO ECHO %date%|FINDSTR /L "%%~ta" 2>NUL >nul 
IF ERRORLEVEL 1 (ECHO failed) ELSE (ECHO succeeded) 
SET "filename1=my.7z" 
FOR %%a IN ("%filename1%") DO ECHO %date%|FINDSTR /L "%%~ta" 2>NUL >nul 
IF ERRORLEVEL 1 (ECHO failed) ELSE (ECHO succeeded) 
SET "filename1=missing.7z" 
FOR %%a IN ("%filename1%") DO ECHO %date%|FINDSTR /L "%%~ta" 2>NUL >nul 
IF ERRORLEVEL 1 (ECHO failed) ELSE (ECHO succeeded) 

GOTO :EOF 

Da Sie nicht sh haben besitzen Sie uns das Format, in dem Sie Daten anzeigen - das Datum in einer dir Auflistung oder das Datum in %date% dann das oben genannte ist einfach ein Vorschlag.

Ich verwendete einfach bequeme Dateinamen zum Testen. Die Routine funktioniert für mich.

Der Kern des Verfahrens ist, dass, wenn %date% ist Fri 08-04-2016 und die filetime ist 08-04-2016 10:43am dann findstr eine Übereinstimmung finden werden, als ob entweder das Datum-String oder die Zeitfolge durch die echo geliefert wird, dann wird findstr gesetzt Errorlevel 0 und wird errorlevel 1 oder 2 setzen, wenn die Datumszeichenfolge nicht übereinstimmt oder die Datei fehlt.

Sie müssten die genauen Minutae Ihrer Datumsanzeigen überprüfen, um festzustellen, ob sie in Ihrer Situation zuverlässig sind.