2016-04-08 153 views
0

我需要根據文件的日期戳分支批處理文件執行。基本上,有一個文件必須每天生成一次,當天的任何時間都可以。批處理文件if語句基於文件的日期戳

僞代碼

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

任何幫助,將不勝感激。

回答

1

這1分鐘的.bat等待隨後檢查的日子,然後執行一個動作 我從HERE

得到了它,您可以更改時間,每隔24小時,並與你想要的那些替換CALL文件調用

@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 

閱讀有關日期函數蝙蝠

+0

我只注意到它拿出了一些我的僞代碼。我實際上需要它以一些(任何)數值日期格式與TODAY進行比較。如果提交者=今天然後做某事,否則做別的事。如果file1的日期戳=今天的日期等 – 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 

既然你已經不是SH將我們顯示日期的格式(dir列表中的日期或%date%中的日期)帶給我們,那麼以上只是一個建議。

我只是使用方便的文件名進行測試。例程適合我。

該方法的關鍵是,如果%date%Fri 08-04-2016和FILETIME是08-04-2016 10:43am然後findstr會發現一個匹配,如同任一日期的串或所述時間字符串由echo供給然後findstr將設置錯誤級別0和將設置錯誤級別1或2,如果日期字符串不匹配或文件丟失。

您需要檢查日期顯示的精確minutae以確定它是否可靠。

相關問題