1

我有一个将比较日期的批处理文件。问题是我们需要在不同的设置中测试它,不同的语言意味着不同的日期格式。

例如获取 Test.log 文件的修改日期(不知道语言环境日期格式是什么)

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

我想在 yyyy/MM/dd 中格式化 Test.log 的修改日期。

在不知道语言环境日期格式的情况下如何实现它?

4

1 回答 1

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。用法在这里

希望这对你们有帮助。

于 2012-04-18T10:09:04.303 回答