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