【发布时间】:2015-05-21 13:25:31
【问题描述】:
我认为下面的批处理文件不需要enableDelayedExpansion,但不知怎的,我忽略了 for 循环内嵌套 if/else 树的问题。
我已使用 :: 评论了预期的操作。
它进入“前置 0”(当 %%b 为空时,我预计小于 10)或“无前置”子句。
鉴于此批处理文件:
setlocal enableDelayedExpansion
for /F "tokens=1,2 delims==" %%a IN ('wmic path Win32_LocalTime get * /format:list ^| findstr "="' ) do (
echo wmic_%%a=%%b
if "%%b"=="" (
:: empty becomes 00
set wmic_%%a=00
) else (
if %%b LSS 10 (
:: 0 prepend
set wmic_%%a=0%%b
) else (
:: no prepend
set wmic_%%a=%%b
)
)
)
set | findstr "wmic_"
endlocal
wmic 语句给出如下列表:
Day=21
DayOfWeek=4
Hour=15
Milliseconds=
Minute=4
Month=5
Quarter=2
Second=22
WeekInMonth=4
Year=2015
我想把它扩展成这样:
wmic_Day=21
wmic_DayOfWeek=04
wmic_Hour=15
wmic_Milliseconds=00
wmic_Minute=02
wmic_Month=05
wmic_Quarter=02
wmic_Second=22
wmic_WeekInMonth=04
wmic_Year=2015
但我得到了像这样的非零扩展变量:
wmic_Day=21
wmic_DayOfWeek=4
wmic_Hour=15
wmic_Milliseconds=0
wmic_Minute=2
wmic_Month=5
wmic_Quarter=2
wmic_Second=22
wmic_WeekInMonth=4
wmic_Year=2015
【问题讨论】:
-
::在技术上是一个标签,它有破坏for循环和if语句内部的东西的历史。请改用rem。 -
没有标签我得到相同的结果。
标签: windows variables batch-file for-loop