Войти

Показать полную графическую версию : [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию


Nilf
25-07-2022, 12:54
Здравствуйте, уважаемые старожилы!

Есть необходимость в создании bat файла следующей функции:

Изначально выводиться информация из CMD в txt файл. Информация о состоянии запуска служб. ( wmic service get name,startmode > C:\Temp\Services\file11.txt )

В дальнейшем этот файл подвергается различным манипуляциям, но проблема в том, что при исполнении команды (wmic service get name,startmode > C:\Temp\Services\file11.txt) состояние запуска службы зачастую показывает разные результаты. И в некотором случае может показать состояние запуска службы как например "Auto" так и попросту не определить его "Unknown". Вот собственно мне это состояние "Unknown" совершенно нежелательно, поэтому хочу сделать так, чтобы после выполнения команды (wmic service get name,startmode > C:\Temp\Services\file11.txt) если в файле было хоть одно слово "Unknown", файл перезаписывался до момента пока слова "Unknown" не будет вовсе. Также проблема еще заключается в том что Powershell пользоваться нельзя ввиду его отсутствия на компе где исполняется скрипт.

Заранее спасибо за потраченное время!

DJ Mogarych
26-07-2022, 08:58
Powershell пользоваться нельзя ввиду его отсутствия на компе »
Что ж там за комп-то, Windows 98?
если в файле было хоть одно слово "Unknown", файл перезаписывался до момента пока слова "Unknown" не будет вовсе »
Есть риск того, что скрипт будет выполняться вечно.

Nilf
26-07-2022, 09:01
Что ж там за комп-то, Windows 98? »
Есть пару штук, но не много ). 2000 и XP в основе своя. Компы просто промышленные.

DJ Mogarych
26-07-2022, 09:24
На XP можно поставить Powershell v2. А так - подберите какое-нибудь стороннее ПО типа WinAudit, которое умеет делать отчёты по вызову из командной строки.

Nilf
26-07-2022, 11:00
Есть риск того, что скрипт будет выполняться вечно. »
Ну тут как повезет, хотя в теории не должно, не думаю что все-же будет неопределенное состояние вечно висеть. Надеюсь итераций до 10 даже не дойдет.

На XP можно поставить Powershell v2. А так - подберите какое-нибудь стороннее ПО типа WinAudit, которое умеет делать отчёты по вызову из командной строки. »
Стороннего ПО, к сожалению, тоже нужно избегать =(.

megaloman
26-07-2022, 12:16
Есть риск, что предложенный батник не будет корректно работать в CMD Ваших старых систем@Echo Off
cls
Set "Out=Z:\____________file11.txt"
Set "KeyWord=Unknown"
Set /A MaxIter=20

Set /A i=0
:Begin
Wmic service get name,startmode > "%Out%"
>nul Find /I "%KeyWord%" "%Out%" ||Exit /B
Set /A i+=1
If %i% LEQ %MaxIter% GoTo :Begin
Echo !!! The file "%Out%"contains the word "%KeyWord%"
Pause
Exit /B

Nilf
26-07-2022, 12:21
Есть риск, что предложенный батник не будет корректно работать в CMD Ваших старых систем
Код:
@Echo Off
cls
Set "Out=Z:\____________file11.txt"
Set "KeyWord=Unknown"
Set /A MaxIter=20
Set /A i=0
:Begin
Wmic service get name,startmode > "%Out%"
>nul Find /I "%KeyWord%" "%Out%" ||Exit /B
Set /A i+=1
If %i% LEQ %MaxIter% GoTo :Begin
Echo !!! The file "%Out%"contains the word "%KeyWord%"
Pause
Exit /B »

Спасибо! Буду пробовать завтра состряпать на основе этого что-то.




© OSzone.net 2001-2012