CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Ответить
Аватара пользователя
Nilf

CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Сообщение Nilf »

Здравствуйте, уважаемые старожилы!



Есть необходимость в создании 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

Re: CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Сообщение DJ Mogarych »

Цитата Nilf:



Powershell пользоваться нельзя ввиду его отсутствия на компе
CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию




Что ж там за комп-то, Windows 98?


Цитата Nilf:



если в файле было хоть одно слово "Unknown", файл перезаписывался до момента пока слова "Unknown" не будет вовсе
CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию




Есть риск того, что скрипт будет выполняться вечно.
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Сообщение DJ Mogarych »

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

Re: CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Сообщение Nilf »

Цитата DJ Mogarych:



Есть риск того, что скрипт будет выполняться вечно.
CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию




Ну тут как повезет, хотя в теории не должно, не думаю что все-же будет неопределенное состояние вечно висеть. Надеюсь итераций до 10 даже не дойдет.




Цитата DJ Mogarych:



На XP можно поставить Powershell v2. А так - подберите какое-нибудь стороннее ПО типа WinAudit, которое умеет делать отчёты по вызову из командной строки.
CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию




Стороннего ПО, к сожалению, тоже нужно избегать =(.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Сообщение megaloman »

Есть риск, что предложенный батник не будет корректно работать в 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

Re: CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию

Сообщение Nilf »

Цитата megaloman:



Есть риск, что предложенный батник не будет корректно работать в 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
CMD/BAT - [решено] Вывести информацию в файл, если в файле есть слово -> обновить информацию




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

Вернуться в «Скриптовые языки администрирования Windows»