2016-09-16 85 views
0

我有一個文本文件包含日期,現在我想比較該日期與當前日期。如果日期匹配我需要執行其他明智的行動,它會打印其他語句。批處理腳本 - 如何比較當前日期與內部文本文件日期

我試了下面的代碼,但代碼我沒有得到。 該變量包含所有值,但它將最後一個值用於比較。

代碼:

for /f %%i in (' MyFile.txt') do set ren=%%i 
echo %ren% 
if %ren% == %date% goto same 

goto notsame 

:same 
echo Dates the same, do some code here 
exit /b 

:notsame 
echo Dates NOT the same, do some code here 
exit /b 

文本文件:

06/04/2017 
16/09/2016 
04/05/2016 
+2

你是如何構建文本文件內容的?或者以不同的方式提問:文本文件的日期格式是否總是遵從'echo%date%'返回的格式? – aschipfl

+0

我從sql根據我的需求收集了文本文件信息並將其假脫機到一個特定的目錄... –

+0

好吧...這意味着從批處理命令('echo%date%')派生的日期格式可能與格式在文本文件中使用,這是真的嗎?這使一切變得更加複雜;然而,這裏有很多關於以標準格式檢索系統或文件日期的問題;或者您也可以解析'%date%'輸出並以編程方式以文本文件的格式生成日期值,但這是與語言環境相關的... – aschipfl

回答

0

如果echo %date:~-10% PC上的輸出返回相同的格式,以那些myfile.txt文件的內容,那麼:

for /f %%i in (MyFile.txt) do if "%%i" equ "%date:~-10%" (call :same) else (call :notsame) 
pause 
exit /b 
:same 
echo Dates the same, do some code here 
goto :eof 
:notsame 
echo Dates NOT the same, do some code here 
goto :eof 
+0

非常感謝您的回覆...它的工作原理.. –

+0

我很高興你收到了適合你的答案。 _對網站,未來和以前的觀衆有幫助,並且還能激勵問題響應者正確回答被標記爲這樣。 – Compo

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "filename1=%sourcedir%\q39533625.txt" 
findstr /x "%date%" "%filename1%">nul 

IF ERRORLEVEL 1 (
ECHO DATE %DATE% NOT found 
) ELSE (
ECHO DATE found:%date% 
) 

GOTO :EOF 

您需要更改sourcedirfilename1的設置以適合您的情況。

我使用了一個名爲q39533625.txt的文件,其中包含我的測試數據。

findstr /x找到文件中的當前日期字符串,並將errorlevel設置爲0(如果找到),否則爲非零。 /x表示「完全匹配」。 >nul抑制findstr的報告到屏幕。

+0

謝謝你..我會嘗試讓你知道... –

+0

嗨Magoo..sorry延遲..我試過這個,但沒有工作...基於系統格式我改變日期爲%日期:〜-10%儘管它沒有奏效。 –

相關問題