Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

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

Новый участник


Сообщения: 40
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

После загрузки винды с задержкой в 10 минут запускается скрипт, который проверяет наличие созданного сегодня лог-файла. При ошибке (файла нет) идет сначала команда на прекращение всех сторонних процессов (как здесь http://forum.oszone.net/post-1888484-3.html), после чего идет команда на перезагрузку ПК.

Если файл есть - идет проверка времени создания файла и сравнения его с системным временем. В случае, если время различается более, чем на 70 минут - опять таки идет сначала команда на прекращение всех сторонних процессов (как здесь http://forum.oszone.net/post-1888484-3.html), после чего идет команда на перезагрузку ПК.

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

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

Отправлено: 23:59, 27-01-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Начнём с этого:
Цитата krokradio:
Но существуют несколько процессов, которые винда сама завершить не может и подвисает. »
Каких именно процессов? Почему не может?

Отправлено: 00:43, 28-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 40
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Каких именно процессов? Почему не может? »
При попытке перезагрузить стандартными средствами процедура доходит до появления логотипа винды и на этом останавливается. Не виснет полностью. Просто переливается. Какой-то из процессов остается незакрытым и мешает ей уйти в перезагрузку. Всего там 47 процессов. Какой именно из них держит - извините, не помню. Автоматизацию проводил мой отец 8 лет назад. Это что-то связанное с защитой от дурака. Возможно процесс блокировки ввода. Знаю точно, что скрипт http://forum.oszone.net/post-1888484-3.html проблему решает. Проверял сегодня. Если же имя процесса очень критично - попробую завтра вытянуть из отца, хотя сомневаюсь, что вспомнит. Возраст.

Отправлено: 01:10, 28-01-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


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

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

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

Отправлено: 02:55, 28-01-2014 | #4


Новый участник


Сообщения: 40
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
указать название и версию Вашей ОС »
Win XP SP2 x86 чистая лицензионная.

Цитата Iska:
По поводу скрипта: в Вашем случае его использование фактически ничем не отличается от применения одной-единственной команды «shutdown.exe /r /f» »
В таком случае я бы сам добавил строку перезагрузки в http://forum.oszone.net/post-1888484-3.html и все. Но мне важна автоматизация. Автоматический опрос и сверка времени создания лог-файла. «shutdown.exe /r /f» с этим не справится :-).

Отправлено: 12:11, 28-01-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата krokradio:
В таком случае я бы сам добавил строку перезагрузки в http://forum.oszone.net/post-1888484-3.html »
Туда параметр «/f» не нужен.


Цитата krokradio:
После загрузки винды с задержкой в 10 минут запускается скрипт »
Как будете реализовывать запуск?

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

На 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, 28-01-2014 в 21:35. Причина: Исправлено: «OperatingSystem» → «Win32_OperatingSystem»

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:06, 28-01-2014 | #6


Новый участник


Сообщения: 40
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Как будете реализовывать запуск? »
Возможно автозапуск WSH timer как например такой (http://www.sql.ru/forum/419055/wsh-timer)

Цитата Iska:
Полагаю, в этом случае речь должна вестись о времени последней модификации файла, а не о времени создания. »
Совершенно верно. В первом абзаце указал
Цитата krokradio:
информация о времени последнего изменения файла постоянно меняется »
а в четвертом перепутал
Цитата krokradio:
проверка времени создания файла »
. Прошу прощения.

На сколько я понимаю (возможно ошибаюсь, не судите строго), вы в скрипте задаете в условии проверку наличия папки
Цитата Iska:
strSourceFolder = "E:\Air\log"
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strSourceFolder) Then
WScript.Sleep 10 * 60 * 1000 »
Эта папка существует всегда по умолчанию. А проверить нужно именно наличие в ней созданного в этот день лог-файла формата ГГГГ-ММ-ЧЧ.LOG

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

Отправлено: 15:09, 28-01-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата krokradio:
На сколько я понимаю … вы в скрипте задаете в условии проверку наличия папки »
Да.

Цитата krokradio:
Эта папка существует всегда по умолчанию. »
А вдруг! Данная проверка ничем не вредит.

Цитата krokradio:
А проверить нужно именно наличие в ней созданного в этот день лог-файла формата ГГГГ-ММ-ЧЧ.LOG »
Цитата Iska:
Код: Выделить весь код
strFile = .BuildPath(strSourceFolder, CStr(Year(dtNow)) & "-" & Right("00" & CStr(Month(dtNow)), 2) & "-" & Right("00" & CStr(Day(dtNow)), 2) & ".log")

If .FileExists(strFile) Then
    …
»
Цитата krokradio:
Возможно автозапуск WSH timer как например такой (http://www.sql.ru/forum/419055/wsh-timer) »
Вам это не нужно:
Цитата Iska:
Код: Выделить весь код
		Do
			…
			WScript.Sleep 20 * 60 * 1000
		Loop
»
Я имел в виду — если Вы, например, будете запускать скрипт из Планировщика задач и в нём же сделаете отсроченный на двадцать десять минут запуск, тогда удалите:
Код: Выделить весь код
WScript.Sleep 10 * 60 * 1000
Если без отсрочки запуска — тогда оставьте эту десятиминутную паузу в начале скрипта.

Последний раз редактировалось Iska, 28-01-2014 в 16:42.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 28-01-2014 | #8


Новый участник


Сообщения: 40
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:40, 28-01-2014 | #9


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Iska:
и в нём же сделаете отсроченный на двадцать минут запуск, »
Прошу прощения, разумеется, следует читать — «отсроченный на десять минут».

Отправлено: 16:41, 28-01-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перезагрузка при несоответствии файла определенным параметрам

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск файла по диску с определенным расширением 91892823 Скриптовые языки администрирования Windows 3 18-09-2012 00:11
MySQL - Изменение данных записей по параметрам 2-ух ячеек jabutyf Программирование и базы данных 5 30-03-2011 18:14
CMD/BAT - [решено] При разрыве связи с определенным IP или HOST проиграть звук neogara Скриптовые языки администрирования Windows 18 20-06-2010 01:29
По каким параметрам выбирать кулер? SPprog Разгон, охлаждение и моддинг 1 30-01-2010 00:19
[решено] Ошибки видеокарты EAH 3650 при работе с определенным БП dima3s Непонятные проблемы с Железом 5 18-09-2009 19:30




 
Переход