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

我正在使用wmic来获得时间。 我已经缩小到一(1)行.bat文件。 我已经从pipe道stdin和stdout的stackoverflow了解到,以避免挂起。

 C:> type t.bat TYPE NUL | wmic os get localdatetime | findstr . 

看来,如果我同时运行wmic,它偶尔会失败。 如果我创build了两个cmd 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%variables在用户select的表示中被格式化,所以我不能使用它。 有什么build议么?

我从来没有听说过你正在报告的问题。

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

假设你已经在你的当前目录中获得了TimeStamp.bat,或者更好,在你的路径的某个地方,那么下面将创建一个名为currentTimeStamp的变量,它包含WMIC格式的当前日期和时间。

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

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

这工作,没有需要的类型nul管道。

 wmic os get localdatetime | findstr .