2014-03-19 4 views
0

나는 두 개의 열이 다음과 같이 간단한 txt 파일을 만들려고하고 있어요 - 첫번째는 마지막으로 수정 한 날짜의 날짜이며, 다음은 (경로 포함) 전체 파일 이름입니다 :전체 파일 이름 및 경로와 마지막으로 수정 한 날짜가있는 디렉토리 목록을 인쇄 하시겠습니까?

/dir > list.txt 거의 일을하지만, 디렉토리별로 모든 파일을 그룹화하고 파일 이름과 마지막 수정 날짜와 같은 행에 디렉토리를 가져 오려고합니다.

배치 스크립트를 사용해야합니까? 또는 CMD 라인? Windows XP를 사용하고 있습니다.

YYYY/MM/DD C:/Directory1/Directory2/Directory3/filename.txt 
YYYY/MM/DD C:/Directory1/Directory2/Directory3/filename.txt 
YYYY/MM/DD C:/Directory1/Directory2/Directory3/filename.txt 
YYYY/MM/DD C:/Directory1/Directory2/Directory3/filename.txt 
YYYY/MM/DD C:/Directory1/Directory2/Directory3/filename.txt 

이 거의 너무 작동하지만 내가 마지막으로 수정 한 날짜를 얻을 수 없습니다

dir /s /b > list.txt 

주 - 나는 부모 디렉토리에서이 cmd를 .bat 또는 파일을 배치하고 난 설치할 수 없습니다 모든 프로그램이나 소프트웨어 (즉, 파이썬, 펄 등) 솔루션은 간단한 CMD 라인이나 .bat 파일이어야합니다.

답변

2
for /f "delims=" %%a in ('dir/s/b/a-d') do echo %%~ta %%a 

%에 걸쳐 %%을 줄일 :

당신은 또한 다음과 같이 명령 줄에서 위의 PowerShell 스크립트를 실행할 수 있습니다.

(물론 - 당신에게 날짜와 시간, 다음 파일 이름을 제공하는 - 당신이 정말 날 원하는거야)

@ECHO OFF 
SETLOCAL 
for /f "delims=" %%a in ('dir/s/b/a-d') do (
FOR /f "tokens=1-3delims=/: " %%q IN ("%%~ta") DO echo %%s/%%r/%%q %%a 
) 

GOTO :EOF 

당신이에 를 지정하신 YYYY/MM/DD 형식을 산출 내 시스템하지만 dd/mm/yyyy의 날짜 형식을 사용합니다. 귀하가 지정하지 않았으므로 세부 사항이 다를 수 있습니다.

+0

크기를 얻거나 표시하려면 어떻게합니까? –

+0

@chepelucho'% ~ za'는 크기를 보여줍니다. 전체 목록을 보려면 프롬프트에서'for /? '를 입력하십시오. 옵션은 끝 부분에 자세히 설명되어 있습니다. – Magoo

1

Windows XP를 사용하고 있으므로 Powershell을 사용하여 CMDLine/Batch Script와 비교할 때 필요한 파일 속성을 쉽게 가져올 수 있습니다. CMD를 사용하여 파일의 마지막 수정 날짜를 검색하는 것은 약간 번거 롭습니다. getFileProperties.ps1

$files=Get-ChildItem -recurse "full_path_to_test_directory" 
for($i=0;$i -lt $files.Count;$i++) { 
$f=$files.Get($i) 
$fName=$f.FullName 
$fModified=Get-Date $f.LastWriteTime -Format "yyyy\\MM\\dd" 
$out="$($fModified) $($fName)" 
Add-Content -Path "full_path_to_destination_file" -Value $out 

}

저장이되고 PowerShell 콘솔에서 실행 :

이보십시오. 프롬프트에서 실행하는 경우, 일괄 라인으로

powershell -File "full_path_to_above_powershell_script" 
0

나는 똑같은 것이 필요했다. OP와 마찬가지로 디렉토리와 모든 하위 디렉토리의 모든 파일에 대한 최종 수정 날짜를 가져 와서 파일에 출력하려고했습니다. Magoo는 그것의 내장을 나열했지만 잃어버린 것은 파일에 저장하는 것입니다. 따라서 명령 프롬프트에서 제대로 작동하는 것입니다.

for /f "delims=" %a in ('dir/s/b/a-d') do echo %~ta %a >>c:\temp\filelist.txt 
+0

제발 말해, 어떻게 얻을 수있는 크기를 표시합니까? –