0
所以我有一個小的腳本,我正在開發將所有最新日誌從幾個目錄一起拉下來的基礎。這個過程的僞代碼如下:批處理腳本:獲取文件,比較日期和獲取文件名(從最新修改日期)
- 去父目錄
- 對於每一個目錄檢查該文件夾「日誌」中是否存在
- IF「日誌」是到該目錄目前去
- VAR FNAME VAR FDATE(最最新文件)
- 對於每一個文件F中的 「日誌」
- IF FNAME是空FNAME = F FDATE =的Fd
- ELSE IF的Fd> FDATE FNAME = F FDATE =的Fd
- END FOR
- 複印日誌文件(FNAME)到 「所有日誌」
- END FOR
下面是迄今爲止我已經得到的批處理代碼的摘錄,它涵蓋了比較文件日期的主要過程:
FOR /d %%d in (*) DO (
CD %%d
IF /I EXIST logs (
CD logs
SET fname
SET fdate
FOR /f %%f in ('dir /b !CD!\!d!') DO (
IF [%fname%]==[] (
%fname%=%%f
%fdate%=%%~tf
) ELSE (
REM Compare modified dates to determine which is the latest file.
IF %%~tf GTR %fdate% (
%fdate%=%%~tf
%fname%=%%f
)
)
REM Copy the log file ...
REM ...
)
CD %pdir%
)
:END
CD %wdir%
我想我已經開始跑步了,但它並不完美,我遇到的麻煩是,當%%〜tf被調用時,文件實際上是打開的;並且存儲和比較日期的結構已關閉(我正在考慮作爲程序員而不是腳本編寫者!)。有人可以請這些問題的建議,並提供任何反饋意見等。
感謝您的回覆,它確實大大簡化了,並進一步幫助我進一步理解批處理腳本編寫中的方法。再次感謝您的幫助。 ...您可能也注意到我更新了代碼 - 因爲「複製」命令沒有指向文件的正確位置。 – user1092809
我可以問最後一個問題嗎?正如我現在想要將所有文件合併在一起,我將如何去實現這一目標?到目前爲止,我已經嘗試將副本更改爲指向文件而不是目錄,但是這只是使用找到的最後一個日誌文件更新文件,而不是附加它們。 – user1092809
如果所有的文件都具有相同的擴展名,你可以執行'copy log * .txt newlogfile.txt' –