2017-04-01 1 views
0

Windows의 dir 명령으로 생성 된 출력에서 ​​특정 디렉토리의 생성 날짜를 추출하려고합니다.dir 출력의 현재 디렉토리와 일치하는 정규 표현식 패턴

예 :

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

출력 : I 정규식을 사용하기 위해 findstr에 파이프 출력을 시도

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 

. 그러나 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 교체 매개 변수의 ~t 수정을 사용

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

것과 동일한 정보를 검색 할 수 있습니다.

그러나이 방법은 폴더 생성 시간을 검색하는 데 사용할 수 없습니다 (Magoo 주석처럼). 를 검색하려면 원래의 접근 방식을 유지해야합니다

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

에 (

아니면 wmic를 사용합니다 (.?findstr으로 필터링 할 수있는 목록과 dir의 열거 시간을 단축하는 단지입니다) 이 경우, 그것은이 경우)

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

을, 폴더 이름 형식을 변경 배로 백 슬래시 필요가있다, 당신은

같은 것을 얻을 것이다
CreationDate=20160927171354.871547+120 
+0

그건 원래의 코드에서와 같이 시간이 아닌 마지막으로 작성된 것입니다. – Magoo

+0

@Magoo, 물론 당신 말이 맞습니다. 나는'timestamp'를 보았고 자동적으로 내 마음을'Last write time'으로 바꿨다. 내 잘못. –

+0

@MCND에게 감사드립니다. 이 솔루션은 작동합니다. 이미 배치 파일에서'wmic' 옵션을 사용했지만 많은 폴더에서'wmic'를 호출하는 것은 다소 느립니다. 그래서 나는'dir'을 사용하기로했다. – Steve

관련 문제