Сбой wmic с одновременными вызовами на XP и Server 2003
Я использую wmic
чтобы получить время. Я сузил это до одной (1) строки.bat файла. Я узнал от stackru о том, как нужно передавать stdin и stdout, чтобы избежать зависаний.
C:> type t.bat
TYPE NUL | wmic os get localdatetime | findstr .
Кажется, что если я запустил wmic одновременно, то это иногда не получится. Если я создаю две оболочки cmd и запускаю следующую команду в каждой, появляются ошибки, подобные приведенной ниже.
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 ответа
Я никогда не слышал о проблеме, о которой вы сообщаете.
Вы можете попробовать getTimeStamp.bat - гибридную утилиту JScript/batch, которая обеспечивает надежные, независимые от локали, вычисления и форматирование даты и времени. Утилита представляет собой чистый скрипт, использующий встроенную функциональность Windows.
Предполагая, что у вас есть getTimeStamp.bat в вашем текущем каталоге, или, что еще лучше, где-то в вашем пути, тогда следующее создаст переменную с именем currentTimeStamp, содержащую текущую дату и время в формате WMIC.
call getTimeStamp -f {yyyy}{mm}{dd}{hh}{nn}{ss}.{fff}000{zzzz} -r currentTimeStamp
Существует множество форматов, а также возможность применять сдвиги даты и времени и т. Д. Полная документация встроена в скрипт.
Это работает, нет необходимости для типа нуль трубы.
wmic os get localdatetime | findstr .