Я пытаюсь написать простой командный файл, чтобы проверять процессор компьютера каждые 30 секунд и выводить в текстовый файл с текущим временем. Я хочу, чтобы каждая строка была такой:
Line1: %time% %cpu%
Line2: %time% %cpu%
Вот что я пока придумал, не сработало:
:loop
echo %TIME% > C:\test.txt
wmic cpu get loadpercentage > C:\test.txt
timeout 30
goto loop
Большой проблемой с вашим образцом является оператор перенаправления '>' - он всегда будет перезаписывать данные в test.txt новыми вводимыми данными. Используйте '>>', чтобы добавить вывод в конец файла, не удаляя информацию, которая уже есть в файле.
Вместо того, чтобы исправлять ваш пакетный скрипт, этот однострочник PowerShell даст вам тот же результат с гораздо меньшими усилиями.
While($true){Get-WmiObject win32_processor | Select-Object @{L="Date";E={Get-Date}},LoadPercentage,SystemName | Export-Csv -NoTypeInformation -Append CPU.csv; Start-Sleep -Seconds 5}
Вы даже можете настроить таргетинг на удаленный компьютер с помощью:
Get-WmiObject -ComputerName
<
компьютер>
Извините за то, что не ответил на ваш конкретный вопрос. Надеюсь, вы найдете то, что я предоставил, полезным.