微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

batch file的循环内部为零点wmic输出

我不认为下面的batch file需要enableDelayedExpansion但不知何故,我忽略了for循环内嵌套的if / else树的问题。

我已经使用::评论了预期的操作。

它会进入“prepend 0”(当%%b为空时,我预计less于10)或“无前置”子句。

给定这个batch file:

在Windows中如何设置环境variables(并不像听起来那么容易)

以环境variables作为参数

从Fortran退出代码到Linux

为什么env不打印PS1variables?

在GDB中debugging时如何获取程序的环境

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

但是我有这样的非零扩展variables:

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

从Windows获取环境variables

如何隐藏跨多个文件可见的全局variables?

为什么不能Python读取我的环境variables?

在编译Code :: Blocks之前运行vcvars32.bat?

将参数从Windows批处理脚本传递到PowerShell脚本

我同意SomethingDark。 ::不应该在括号内使用。

另外,我认为问题的一部分是从WMI查询返回的值的编码是在UCS-2 Little Endian中进行编码的,这对ANSI运行时来说很奇怪。 我找到了解决这个问题的方法,使用set /a ,为每个值添加.0 (这是立即删除的,因为set /a只计算整数)和黑洞错误信息。

@echo off setlocal enabledelayedexpansion for /f "delims=" %%I in ('wmic path win32_localtime get * /format:list ^| findstr "="') do ( 2>NUL set /a "wmic_%%I.0" ) for /f "tokens=1,2 delims==" %%I in ('set wmic_') do ( if %%J leq 9 set "%%I=0%%J" ) set wmic_

这是丑陋的,但它似乎产生你想要的输出。 我想,最后证明了手段。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐