CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Аватара пользователя
krokradio

CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение krokradio »

Компьютер радиостанции. Идет эфир. Каждый день в 00:00:01 в папке E\Air\log создается новый файл вида ГГГГ-ММ-ЧЧ.LOG куда прописывается каждый проигранный файл по его завершении. То есть информация о времени последнего изменения файла постоянно меняется каждые 1 - 70 минут (в зависимости от длительности файла или прямого эфира). За долгие года выстроен процесс полной автоматизации, но иногда вылазят непредвиденные ошибки в формировании плейлистов и машина может просто замолкнуть. А так как процесс вещания на 95% автоматизирован и не всегда получается вовремя промониторить эфир, бывали случаи, что радио молчало по пол дня и больше. Проблема ошибок формирования плейлистов решается обычной перезагрузкой. Но существуют несколько процессов, которые винда сама завершить не может и подвисает.



Логика решения этой проблемы у меня выстроилась, но писать скрипты я не умею. И если еще с чем-то простеньким я сумею быстро разобраться, то на такое понадобится много времени.



После загрузки винды с задержкой в 10 минут запускается скрипт, который проверяет наличие созданного сегодня лог-файла. При ошибке (файла нет) идет сначала команда на прекращение всех сторонних процессов (как здесь
VBS/WSH/JS - Завершение процессов кроме, определенных
, после чего идет команда на перезагрузку ПК.



Если файл есть - идет проверка времени создания файла и сравнения его с системным временем. В случае, если время различается более, чем на 70 минут - опять таки идет сначала команда на прекращение всех сторонних процессов (как здесь
VBS/WSH/JS - Завершение процессов кроме, определенных
, после чего идет команда на перезагрузку ПК.



Если время различается менее, чем на 70 минут - процедура проверки завершается и запускается снова через 20 минут.



Вот такая у меня задачка. Может кто помочь в решении этой проблемы?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение Iska »

Начнём с этого:


Цитата krokradio:



Но существуют несколько процессов, которые винда сама завершить не может и подвисает.
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Каких именно процессов? Почему не может?
Аватара пользователя
krokradio

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение krokradio »

Цитата Iska:



Каких именно процессов? Почему не может?
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




При попытке перезагрузить стандартными средствами процедура доходит до появления логотипа винды и на этом останавливается. Не виснет полностью. Просто переливается. Какой-то из процессов остается незакрытым и мешает ей уйти в перезагрузку. Всего там 47 процессов. Какой именно из них держит - извините, не помню. Автоматизацию проводил мой отец 8 лет назад. Это что-то связанное с защитой от дурака. Возможно процесс блокировки ввода. Знаю точно, что скрипт
VBS/WSH/JS - Завершение процессов кроме, определенных
проблему решает. Проверял сегодня. Если же имя процесса очень критично - попробую завтра вытянуть из отца, хотя сомневаюсь, что вспомнит. Возраст.
Аватара пользователя
krokradio

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение krokradio »

Рекомендую всё-таки:



а) указать название и версию Вашей ОС;

б) попросить модераторов перенести тему в раздел, соответствующий ОС, и там решать проблему с поиском данного процесса.



По поводу скрипта: в Вашем случае его использование фактически ничем не отличается от применения одной-единственной команды «shutdown.exe /r /f».
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение Iska »

Цитата Iska:



указать название и версию Вашей ОС
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Win XP SP2 x86 чистая лицензионная.




Цитата Iska:



По поводу скрипта: в Вашем случае его использование фактически ничем не отличается от применения одной-единственной команды «shutdown.exe /r /f»
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




В таком случае я бы сам добавил строку перезагрузки в
VBS/WSH/JS - Завершение процессов кроме, определенных
и все. Но мне важна автоматизация. Автоматический опрос и сверка времени создания лог-файла. «shutdown.exe /r /f» с этим не справится :-).
Аватара пользователя
krokradio

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение krokradio »

Цитата krokradio:



В таком случае я бы сам добавил строку перезагрузки в
VBS/WSH/JS - Завершение процессов кроме, определенных
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Туда параметр «/f» не нужен.




Цитата krokradio:



После загрузки винды с задержкой в 10 минут запускается скрипт
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Как будете реализовывать запуск?




Цитата krokradio:



идет проверка времени создания файла
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам





Цитата krokradio:



и запускается снова через 20 минут.
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Полагаю, в этом случае речь должна вестись о времени последней модификации файла, а не о времени создания.



На WSH:


читать дальше »




Код:

Код: Выделить всё

Option Explicit
Dim strSourceFolder
Dim dtNow
Dim strFile
strSourceFolder = "E:\Air\log"
With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strSourceFolder) Then
		WScript.Sleep 10 * 60 * 1000
		Do
			dtNow = Now()
			strFile = .BuildPath(strSourceFolder, CStr(Year(dtNow)) & "-" & Right("00" & CStr(Month(dtNow)), 2) & "-" & Right("00" & CStr(Day(dtNow)), 2) & ".log")
			If .FileExists(strFile) Then
				If Abs(DateDiff("n", dtNow, .GetFile(strFile).DateLastModified)) > 70 Then
					ShutdownSystem
				End If
			Else
				ShutdownSystem
			End If
			WScript.Sleep 20 * 60 * 1000
		Loop
	Else
		WScript.Echo "Source folder [" & strSourceFolder & "] not found."
		WScript.Quit 1
	End If
End With
WScript.Quit 0
'=============================================================================
'=============================================================================
Sub ShutdownSystem()
	Dim objSWbemObjectEx
	With WScript.CreateObject("WbemScripting.SWbemLocator")
		.Security_.Privileges.AddAsString "SeShutdownPrivilege", True
		For Each objSWbemObjectEx In .ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_OperatingSystem")
			objSWbemObjectEx.Win32Shutdown 6
		Next
	End With
End Sub
'=============================================================================





Используется перезагрузка с принудительным снятием процессов. «WScript.Sleep 10 * 60 * 1000» — «с задержкой в 10 минут». Если в самом скрипте не нужна — закомментируйте или удалите.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение Iska »

Цитата Iska:



Как будете реализовывать запуск?
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Возможно автозапуск WSH timer как например такой (
http://www.sql.ru/forum/419055/wsh-timer
)




Цитата Iska:



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




Совершенно верно. В первом абзаце указал
Цитата krokradio:



информация о времени последнего изменения файла постоянно меняется
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




а в четвертом перепутал
Цитата krokradio:



проверка времени создания файла
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




. Прошу прощения.



На сколько я понимаю (возможно ошибаюсь, не судите строго), вы в скрипте задаете в условии проверку наличия папки


Цитата Iska:



strSourceFolder = "E:\Air\log"

With WScript.CreateObject("Scripting.FileSystemObject")

If .FolderExists(strSourceFolder) Then

WScript.Sleep 10 * 60 * 1000
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Эта папка существует всегда по умолчанию. А проверить нужно именно наличие в ней созданного в этот день лог-файла формата ГГГГ-ММ-ЧЧ.LOG




Цитата Iska:



Используется перезагрузка с принудительным снятием процессов. «WScript.Sleep 10 * 60 * 1000» — «с задержкой в 10 минут».
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Нужна.
Аватара пользователя
krokradio

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение krokradio »

Цитата krokradio:



На сколько я понимаю … вы в скрипте задаете в условии проверку наличия папки
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Да.




Цитата krokradio:



Эта папка существует всегда по умолчанию.
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




А вдруг! Данная проверка ничем не вредит.




Цитата krokradio:



А проверить нужно именно наличие в ней созданного в этот день лог-файла формата ГГГГ-ММ-ЧЧ.LOG
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам





Цитата Iska:





Код:

Код: Выделить всё

strFile = .BuildPath(strSourceFolder, CStr(Year(dtNow)) & "-" & Right("00" & CStr(Month(dtNow)), 2) & "-" & Right("00" & CStr(Day(dtNow)), 2) & ".log")
If .FileExists(strFile) Then
    …

CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам





Цитата krokradio:



Возможно автозапуск WSH timer как например такой (
http://www.sql.ru/forum/419055/wsh-timer
)
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Вам это не нужно:


Цитата Iska:





Код:

Код: Выделить всё

		Do
			…
			WScript.Sleep 20 * 60 * 1000
		Loop

CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Я имел в виду — если Вы, например, будете запускать скрипт из Планировщика задач и в нём же сделаете отсроченный на двадцать десять минут запуск, тогда удалите:



Код:

Код: Выделить всё

WScript.Sleep 10 * 60 * 1000

Если без отсрочки запуска — тогда оставьте эту десятиминутную паузу в начале скрипта.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение Iska »

Понял. Спасибо. Сейчас поставлю на проверку. О результате отпишусь.
Аватара пользователя
krokradio

Re: CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Сообщение krokradio »

Цитата Iska:



и в нём же сделаете отсроченный на двадцать минут запуск,
CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам




Прошу прощения, разумеется, следует читать — «отсроченный на десять минут».
Ответить

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