2017-04-01 38 views
0

我嘗試從Windows中的dir命令生成的輸出中提取特定目錄的創建日期。正則表達式匹配dir輸出中的當前目錄

實施例:

dir c:\folder\Myfolder\ /T:C /A:D

輸出:

22-11-2013 15:09 <DIR>   . 
22-11-2013 15:09 <DIR>   .. 
21-03-2015 14:32 <DIR>   Folder1 
12-09-2014 11:03 <DIR>   Folder2 
18-10-2016 13:29 <DIR>   Folder3 

予以使用正則表達式試圖管道輸出到findstr。但dir c:\folder\Myfolder\ /T:C /A:D | findstr \r "\."顯示...兩行。

我需要的是日期和時間Myfolder(即與單個.行)爲了創建此文件夾的時間戳。

回答

1
dir c:\folder\Myfolder\ /ad /t:c|findstr /L /e /c:" ." 

應在年底/c:" ."常量字符串空間得到您的desireed數據

FINDSTR /L文字/e

+0

'/ L'選項不會傷害,但它是多餘的,因爲'/ C'默認爲文字搜索。一個可比較的正則表達式是'findstr/rc:「\。$」'。 – dbenham

+0

@Magoo感謝您的建議 – Steve

3

對於最後寫入時間,不需要管道到findstr。相同的信息可以被檢索爲

for /d %%a in ("c:\folder\Myfolder") do echo %%~ta 

使用~t修飾符for替換參數來檢索文件夾的時間戳。

但是,這種方法不能用於檢索文件夾創建時間(如Magoo評論)。爲了找回它,你將需要保持你原來的做法

dir /tc /ad "c:\folder\Myfolder\.?" | findstr /e /c:" \." 

(該.?只是縮短至findstr過濾列表,並在dir枚舉時間)

或者你可以使用wmic(以這種情況下,有必要更改文件夾命名格式,加倍反斜槓)

wmic fsdir where name="c:\\folder\\Myfolder" get CreationDate /value 

在這種情況下,你會得到類似

CreationDate=20160927171354.871547+120 
+0

這爲您提供了最後編寫的時間,而不是像原始代碼中那樣創建時間。 – Magoo

+0

@Magoo,當然你是對的,我看到了'時間戳',並且自動將我的想法轉到'最後寫入時間',這是我的錯。 –

+0

謝謝@MCND。此解決方案有效。我已經在批處理文件中使用了'wmic'選項,但爲許多文件夾調用'wmic'的速度相當慢。所以我選擇使用'dir'。 – Steve