2012-04-17 56 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

希望这对你们帮助。

相关问题