我有一个将比较日期的批处理文件。问题是我们需要在不同的设置中测试它,不同的语言意味着不同的日期格式。
例如获取 Test.log 文件的修改日期(不知道语言环境日期格式是什么)
for %%i in (c:\Test.log) do (
call :testprocess %%~ti
)
我想在 yyyy/MM/dd 中格式化 Test.log 的修改日期。
在不知道语言环境日期格式的情况下如何实现它?
我有一个将比较日期的批处理文件。问题是我们需要在不同的设置中测试它,不同的语言意味着不同的日期格式。
例如获取 Test.log 文件的修改日期(不知道语言环境日期格式是什么)
for %%i in (c:\Test.log) do (
call :testprocess %%~ti
)
我想在 yyyy/MM/dd 中格式化 Test.log 的修改日期。
在不知道语言环境日期格式的情况下如何实现它?
我已经找到了解决方案。我失去了我的参考链接。所以我调整了一些代码并根据我的需要使用它。
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。用法在这里。
希望这对你们有帮助。