在XP和Server 2003上同时调用wmic失败

时间:2014-01-10 00:57:25

标签: 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)

...

C:> TYPE NUL | wmic os get localdatetime  | findstr .
Win32 Error: The process cannot access the file because it is being used by another process.

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

它所谈论的“文件”可能是TempWmicBatchFile.bat,但我肯定不知道。我还没有看到此文件出现在Windows Vista或Windows 7计算机上。

还有另一种获取当前时间的方法吗? %DATE%%TIME%变量的格式是用户选择的表示形式,因此我无法使用它。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我从未听说过你报道的问题。

您可以尝试getTimeStamp.bat - 一个混合JScript /批处理实用程序,它提供强大的,区域设置无关的日期和时间计算和格式。该实用程序是使用本机Windows功能的纯脚本。

假设您在当前目录中有getTimeStamp.bat,或者更好,在路径中的某个位置,则以下内容将创建一个名为currentTimeStamp的变量,其中包含WMIC格式的当前日期和时间。

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

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

答案 1 :(得分:0)

这样做,不需要类型nul管道。

wmic os get localdatetime | findstr .