2012-04-17 3 views
1

날짜를 비교할 배치 파일이 있습니다. 문제는 다른 설정에서 테스트해야한다는 것입니다. 다른 언어는 다른 날짜 형식을 의미합니다. 배치를 사용하여 창 로캘을 ​​기준으로 날짜의 서식을 지정하는 방법은 무엇입니까?

예컨대

내가/MM은/DD YYYY에 Test.log의 수정 된 날짜를 포맷 할

for %%i in (c:\Test.log) do (
call :testprocess %%~ti 
) 

(로케일 날짜 형식이 무엇인지 아는되지 않음) Test.log 파일의 수정 날짜를 가져옵니다.

로케일 날짜의 형식이 무엇인지 알지 못해서 어떻게해야합니까?

+1

[다음 질문] (http://www.google.com/cse?cx=018205968162215846785%3A7n6ajnwyz-i&ie=UTF-8&q=batch+wmic+date&sa=Search)을 참조하십시오. 특히 [this] (http://stackoverflow.com/questions/5594121/batch-script-date-into-variable "날짜를 변수로 일괄 처리") 및 [this] (http://stackoverflow.com/questions/8937944/batch-process YYYYMMDD 형식의 날짜가있는 파일을 한 폴더에서 다른 폴더로 이동하는 일괄 처리 "). –

+1

@quinekxi 왜 당신은 당신의 제목에 게시하지 않았습니까? 답변을 찾으면 답변을 게시 할 수 있습니다. 그러면 직접 답변을 수락 할 수 있습니다. – gideon

+0

@gideon hey. 고맙다. :디 – quinekxi

답변

1

이 문제에 대한 해결책을 찾았습니다. 나는 나의 참고 문헌의 링크를 잃어 버렸다. 그래서 나는 약간의 코드를 수정하고 이것을 나의 필요에 사용한다.

for %%i in (c:\Test.log) do (
    call :testprocess %%~ti 
    ) 

    :testprocess 
    set temptime=%1 

키를 검색하여 국제 레지스트리에서 iDate 및 sDate 값을 얻으십시오.

set KEY_DATE="HKCU\Control Panel\International" 
    FOR /F "usebackq skip=4 tokens=1,3" %%A IN (`REG QUERY %KEY_DATE% /v iDate 2^>nul`) DO set iDate=%%B 
    FOR /F "usebackq skip=4 tokens=1,3" %%A IN (`REG QUERY %KEY_DATE% /v sDate 2^>nul`) DO set sDate=%%B 

은 내가 delims로 sDate 값을 사용 = 및 같은 iDate을 사용하는 어떤 로케일의 날짜 형식.

FOR /F "tokens=1-3 delims=%sDate%" %%A IN ("%temptime%") DO (
     IF "%iDate%"=="0" (
      SET fdd=%%B 
      SET fmm=%%A 
      SET fyyyy=%%C 
     ) 
     IF "%iDate%"=="1" (
      SET fdd=%%A 
      SET fmm=%%B 
      SET fyyyy=%%C 
     ) 
     IF "%iDate%"=="2" (
      SET fdd=%%C 
      SET fmm=%%B 
      SET fyyyy=%%A 
     ) 
    ) 

    echo %fyyyy%/%fMM%/%fdd% 

또한 ff를 참조 할 수도 있습니다. here에서의 사용.

여러분에게 도움이되기를 바랍니다.

관련 문제