正则表达式匹配dir输出中的当前目录
问题描述:
我尝试从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
(即与单个.
行)为了创建此文件夹的时间戳。
答
dir c:\folder\Myfolder\ /ad /t:c|findstr /L /e /c:" ."
应在年底/c:" ."
常量字符串空间得到您的desireed数据
FINDSTR /L
文字/e
。
答
对于最后写入时间,不需要管道到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
'/ L'选项不会伤害,但它是多余的,因为'/ C'默认为文字搜索。一个可比较的正则表达式是'findstr/rc:“\。$”'。 – dbenham
@Magoo感谢您的建议 – Steve