2012-04-17 47 views
1

我有一個批處理文件,將比較日期。問題是我們需要在不同的設置中測試它,不同的語言意味着不同的日期格式。如何根據批處理窗口區域設置格式化日期?

e.g獲取test.log中文件的修改日期(不知道的語言環境的日期格式是什麼)

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

我要格式化test.log中的修改日期爲yyyy/MM/DD。

我怎麼能實現它不知道什麼是區域日期的格式?

+1

看看[這些問題](http://www.google.com/cse?cx=018205968162215846785%3A7n6ajnwyz-i&ie=UTF-8&q=batch+wmic+date&sa=Search),特別是[此] (http://stackoverflow.com/questions/5594121/batch-script-date-into-variable「批處理腳本日期到變量」)和[this](http://stackoverflow.com/questions/8937944/batch-process移動文件具有日期在yyyymmdd格式從一個文件夾到ano「批處理將具有YYYYMMDD格式日期的文件從一個文件夾移動到另一個文件夾」)。 – 2012-04-18 05:30:51

+1

@quinekxi你爲什麼發佈封閉在你的標題?如果你找到答案,你可以發佈答案,然後你自己就可以接受答案。 – gideon 2012-04-18 08:49:12

+0

@gideon嘿。謝謝你的改正。 :d – quinekxi 2012-04-18 10:09:37

回答

1

我找到了解決方案。我失去了我的參考鏈接。所以我調整了一些代碼,並根據我的需要使用它。

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

    :testprocess 
    set temptime=%1 

在註冊表中搜索關鍵字International獲取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 

我用sDate值作爲delims =和所使用的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

希望這對你們幫助。

相關問題