Войти

Показать полную графическую версию : [решено] Devcon. Перезапуск устройства с использованием IF и FOR


ivantresh
02-01-2017, 19:02
Помогите пожалуйста c батником, который будет пере запускать устройство если оно запустилось с ошибкой.
Знаю, что нужно использовать devcon, findstr, if и goto да и с if, for не дружу. Как это всё реализовать - не знаю.

При загрузке системы, устройство чаще всего запускается с ошибкой.
Вот, что выдаёт:

C:\Windows\system32>devcon64 status "@USB\VID_0079*PID_0007\5&326C0CBC&0&10"
USB\VID_0079&PID_0007\5&326C0CBC&0&10
Name: USB- Device has a problem: 10.
1 matching device(s) found.

Если сделать рестарт устройства 1-3 раза,всегда по разному, через команду devcon64 restatrt, оно запускается и работает нормально. Пишет:
Driver is running.

ЗАДАЧА: Как сделать, чтобы при запуске батника:
1.Проверка статуса устройства, если оно запущено нормально (Driver is running.), то ничего не делать.
2. Если запустилось с ошибкой (Device has a problem: 10.), то devcon64 restatrt. Причём команда повторялась бы до тех пор, пока устройство не запуститься нормально, то есть в статусе будет - Driver is running. И с небольшими паузами после каждого рестарта. Лишний рестарт приведёт к той же ошибке.
Вот всё, что я смог:

Файл батника

devcon64 status "@USB\VID_0079*PID_0007\5&326C0CBC&0&10"|findstr /C:"Device has a problem: 10"
if not errorlevel 1 (
devcon64 restart "@USB\VID_0079*PID_0007\5&326C0CBC&0&10"
)

Как бы сюда вставить цикл for или goto, что бы устройство пере запускалось пока не запустится нормально + небольшие паузы после каждого рестарта ?

Обновление драйверов не предлагать. Устройство устаревшее, и чего я только не перепробовал, и не только я - всё бесполезно.

Буду очень признателен за любую помощь. Заранее благодарю за ответ.

Опиум
03-01-2017, 17:50
может учитывать запуск устройства по его функциональности...
например у меня глючит в одном месте сетевуха.... исправлено костылем:


ping 192.168.1.2 -n 10 -l 1 |find "TTL" && goto c1

devcon.exe disable "PCI\VEN_8086&DEV_108C&SUBSYS_108C15D9&REV_03" >>%~dpn0_log.txt
devcon.exe enable "PCI\VEN_8086&DEV_108C&SUBSYS_108C15D9&REV_03" >>%~dpn0_log.txt

:c1

ivantresh
04-01-2017, 09:32
Проблему решил.

:loop
devcon_x64 status "@USB\VID_0079*PID_0007\5&326C0CBC&0&10"|findstr /C:"Device has a problem: 10"
if not errorlevel 1 (
devcon_x64 restart "@USB\VID_0079*PID_0007\5&326C0CBC&0&10"
timeout /t 1 /nobreak
goto loop
) else (
start C:\RAB\MSGPULTRUN.vbs
)




© OSzone.net 2001-2012