如何使用批处理根据 Windows 区域设置格式化日期?

问题描述 投票:0回答:1

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

e.g 获取Test.log文件的修改日期(不知道locale日期格式是什么)

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

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

在不知道区域设置日期的格式是什么的情况下如何实现它?

windows date batch-file format locale
1个回答
2
投票

我已经找到了解决方案。我丢失了参考链接。所以我调整了一些代码并根据我的需要使用它。

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

希望这对你们有帮助。


要了解不同值的含义,请检查此链接

© www.soinside.com 2019 - 2024. All rights reserved.