我有一个比较日期的批处理文件。问题是我们需要在不同的设置中测试它,不同的语言意味着不同的日期格式。
例如,获取Test.log文件的修改日期(不知道区域设置日期格式是什么)
for %%i in (c:\Test.log) do (
call :testprocess %%~ti
)
我想在yyyy / MM / dd。
中格式化Test.log的修改日期如果不知道区域设置日期的格式是什么,我怎么能实现呢?
答案 0 :(得分:1)
我已经找到了解决方案。我丢失了我的参考链接。所以我调整了一些代码并根据我的需要使用它。
for %%i in (c:\Test.log) do (
call :testprocess %%~ti
)
:testprocess
set temptime=%1
在注册表中搜索国际关键字,获取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。
希望对你们有所帮助。