Windows wmic故障,在XP和Server 2003上并发调用

Windows wmic故障,在XP和Server 2003上并发调用,windows,batch-file,wmic,Windows,Batch File,Wmic,我正在使用wmic获取时间。我已经把它缩小到一(1)行.bat文件。我从stackoverflow学到了如何使用管道stdin和stdout来避免挂起 C:> type t.bat TYPE NUL | wmic os get localdatetime | findstr . 似乎如果我同时运行wmic,它偶尔会失败。如果我创建两个cmd shell并在每个shell中运行以下命令,则会出现与下面类似的错误 for /l %i in (0,1,100) do (call t.bat)

我正在使用
wmic
获取时间。我已经把它缩小到一(1)行.bat文件。我从stackoverflow学到了如何使用管道stdin和stdout来避免挂起

C:> type t.bat
TYPE NUL | wmic os get localdatetime | findstr .
似乎如果我同时运行wmic,它偶尔会失败。如果我创建两个cmd shell并在每个shell中运行以下命令,则会出现与下面类似的错误

for /l %i in (0,1,100) do (call t.bat)

这似乎不会发生在Vista、7等上。我只看到它发生在Windows XP SP3和Windows Server 2003 SP2上

它所说的“文件”可能是
TempWmicBatchFile.bat
,但我不确定这一点。我没有在Windows Vista或Windows 7计算机上看到此文件


是否有其他方法获取当前时间?
%DATE%
%TIME%
变量的格式由用户选择,因此我不能使用它。有什么建议吗?

这很有效,不需要nul型管道

wmic os get localdatetime | findstr .

我从来没有听说过你报道的问题

您可以尝试-一个混合的JScript/批处理实用程序,它提供健壮、独立于语言环境的日期和时间计算和格式。该实用程序是使用本机Windows功能的纯脚本

假设当前目录中有getTimeStamp.bat,或者更好,路径中的某个地方有getTimeStamp.bat,那么下面将创建一个名为currentTimeStamp的变量,该变量包含WMIC格式的当前日期和时间

call getTimeStamp -f {yyyy}{mm}{dd}{hh}{nn}{ss}.{fff}000{zzzz} -r currentTimeStamp

有很多可用的格式,以及应用日期和时间偏移等功能。脚本中嵌入了完整的文档。

我用5个cmd窗口测试了这一点,所有操作都很好。我与WMIC合作过很多次,但我从未听说过“使用管道stdin和stdout以避免挂起”。您能提供一个指向您所指内容的链接吗?我使用了dbenham的getTimeStamp.bat,如下所述。清除wmic.exe的所有用法后,程序正在运行。我再次查找管道输入/输出消息,但没有找到它们。我知道我在添加重定向之前遇到了很多困难。Dave,我一直在使用getTimeStamp.bat并取得了一些成功。行“for/f”tokens=1,2 delims==“%%A in('set-o 2^>nul')做什么(“完成”,“set-o”报告什么?@Paul-它解析所有偏移参数的当前定义(-oy,-om,-od,等等)。请参阅上面一行中偏移量变量的定义,它将偏移量类型等同于JScript函数的部分名称。例如,-oh变为setHours()和getHours().oz参数用于时区,表示为从GMT开始的分钟偏移量。很抱歉看起来很密集,但我看不到
set-o
如何与偏移量变量连接。在我的机器上,
set-o
返回
环境变量-o未定义
,当stderr重定向到nul时,它将不返回任何内容。@Paul-它仅报告已定义的偏移量变量-默认情况下未定义任何偏移量。若要获取2小时前的时间,可以使用
getTimestamp-oh-2
,它将设置
-oh=-2
,并将
set-o
进行报告。可以组合偏移量。例如,分钟偏移量(-om)和日偏移量(-od)可以独立设置。偏移量变量仅在脚本执行期间定义。这是一个多么“整洁”的技巧。如果有人关心类似的事情,我想它比set | grep^-o短几个字符。谢谢您的帮助。
call getTimeStamp -f {yyyy}{mm}{dd}{hh}{nn}{ss}.{fff}000{zzzz} -r currentTimeStamp