2009-09-14 115 views
0

我正在寫一個bat腳本,我必須將文件中的日期保存到一個變量中。我怎樣才能做到這一點?如何從bat文件中的文件獲取日期?

我將使用該變量來檢查文件是否比N天更早,因此最好將日期保存爲允許我進行此類測試的格式。

+0

注意:除了命令行解釋器語言的語法源自那些日子(以及之前的CP/M),這很可能與DOS完全沒有關係。你不會包含CP/M標籤,對吧? – Joey 2009-09-14 17:17:59

回答

2

批處理文件中的日期操作幾乎不可能以合理的方式得到正確的。你唯一能做的就是支持你的文化,而忽略其他。

但是,如果您在批處理(或子例程)的參數中具有文件的名稱,則可以使用%~t1。否則,執行以下操作:

for %%x in (%file%) do set datetime=%%~tx 

在我的機器這個出來爲「2009-08-28 16:13」,那麼它可以被解析成它的各個部分:

:dissect_date_time 
for /f "tokens=1-5 delims=-: " %%a in (%1) do set year=%%a&set month=%%b&set day=%%c&set hour=%%d&set minute=%%e 
goto :eof 

這是一個子程序你可以

call :dissect_date_time %datetime% 

打電話,那麼你必須在各自的環境變量中的各個部分。根據您的日期/時間格式進行相應調整。這一個大量使用for作爲分詞器。

一旦你有了單獨的部分,你可以嘗試通過簡單地使用當前日期/時間進行相同的過程並減去文件來確定文件的年代。不會很有趣,但是有用。

1

Here是「從單個文件夾中刪除N天以前的文件」的批處理文件。

將刪除替換爲您需要執行的操作。

+0

該批次,特別是日期解析部分是邪惡的:-) – Joey 2009-09-20 08:48:58

1

批處理命令語言並不真正取決於任務。微軟建議PowerShell

Microsoft Windows PowerShell命令行shell和腳本語言可幫助IT專業人員實現更高的控制和生產力。 Windows PowerShell使用新的面向管理員的腳本語言,130多種標準命令行工具以及一致的語法和實用程序,使IT專業人員能夠更輕鬆地控制系統管理並加速自動化。 Windows PowerShell易於採用,學習和使用,因爲它可與現有IT基礎架構和現有腳本投資協同工作,並且可在Windows XP,Windows Vista和Windows Server 2003上運行。

有關討論使用PowerShell執行類似任務,請參閱powershell-script-to-delete-old-files

+0

或者,一般而言,將任務委託給腳本語言。 – 2009-09-20 08:59:55