2014-09-01 2 views
0
for /f %%f in ('dir /b "\\rspdb1\e$\master10\rspadvrec.b*" "\\rspdb1\e$\master10\rspadvrec.d*" "\\rspdb1\e$\master10\rspadvrec.lg*" "\\rspdb1\e$\master10\rspadvpdt.a*"') do (
    set fileDateTime=%%~tf 
    set fileName=%%f 
    echo %fileDateTime% 
    echo %fileName% 
) 

위의 코드에서 폴더의 파일 수정 날짜를 나열하고 싶습니다.하지만 제안이 없습니다.특정 파일을 검사하는 방법을 일괄 처리합니다.

답변

1

setlocal EnableDelayedExpansion을 스크립트 시작 부분에 추가하고 %variable% 대신 !variable!을 사용해야합니다.

EnableDelayedExpansion에 대한 자세한 내용은 대답 https://stackoverflow.com/a/18464353/2749114을 참조하십시오.

또한 데이터 시간을 정확하게 얻기 위해 파일의 전체 경로를 얻으려면 /s에서 dir까지의 옵션을 추가해야합니다. 파일 이름 만 필요하면 %%~f 대신 %%~nxf을 사용하십시오.

다음은 코드입니다.

@echo off & setlocal EnableDelayedExpansion 
for /f %%f in ('dir /b /s "\\rspdb1\e$\master10\rspadvrec.b*" "\\rspdb1\e$\master10\rspadvrec.d*" "\\rspdb1\e$\master10\rspadvrec.lg*" "\\rspdb1\e$\master10\rspadvpdt.a*"') do (
    set fileDateTime=%%~tf 
    set fileName=%%~nxf 
    echo !fileDateTime! 
    echo !fileName! 
) 
+0

"setlocal EnableDelayedExpansion"은 이미 코드 시작 부분에 있으며!! fileDateTime!은 (는) 잊어 버려서 죄송합니다. 작동하지 않았다. – user2400583

+0

답변을 수정했습니다. 데이터 시간을 얻으려면 파일의 전체 경로를 얻으려면 "dir"에 "/ s"를 전달해야합니다. "%% ~ nxf"를 사용하여 전체 경로에서 파일 이름을 가져옵니다. – Landys

+0

우수. 그것은 작동합니다. 귀중한 시간과 답변을 많이 주셔서 감사합니다. – user2400583

관련 문제