Включение/Отключение устройства из командной строки (CMD)

У меня на компьютере возникала такая проблема, что после пробуждения из спящего режима переставала работать DVB карта для просмотра спутникового ТВ, в диспетчере устройств в свойствах карты писалось что «Запуск этого устройства невозможен». И тогда мне что бы включить телевидение приходилось заходить в диспетчер устройств, отключать карту, потом заново включать и уже потом я мог включить программу для просмотра ТВ. Тогда я решил немного автоматизировать процесс: при клике на ярлык программы просмотра, должен был запускаться батник (bat-файл),  который сначала бы отключал карту, заново включал её, и уже потом запускал программу.

Для этого нам понадобится маленькая утилита от компании Microsoft — Devcon. Качаем её тут (77,2кб). Запускаем программу, указываем путь распаковки C:\Temp и жмём кнопку Unzip.

После распаковки нажимаем «Ок», закрываем программу и из папки C:\Temp\i386 копируем файл devcon.exe в папку C:\Windows\system32\. Если у вас Windows 64-х битный, то Вам нужно взять файл из папки C:\Temp\ia64.

Все, утилиту подготовили, теперь можно приступать к написанию bat файла. Создадим текстовый файл и переименуем  его  в Run_DVB_Dream.bat (в конце обязательно должно быть расширение bat, не txt!). Вы можете назвать его по другому, как угодно. Далее правой копной по этому файлу, выбрать «Изменить». Впишем следующие строки:

devcon disable "PCI\VEN_1969&DEV_1083&SUBSYS_E0001458&REV_C0"
devcon enable "PCI\VEN_1969&DEV_1083&SUBSYS_E0001458&REV_C0"
start dvbdream.exe

Где:

  1. devcon disable «PCI\VEN_1969&DEV_1083&SUBSYS_E0001458&REV_C0»  — Отключение устройства с заданным ID.
  2. devcon enable «PCI\VEN_1969&DEV_1083&SUBSYS_E0001458&REV_C0» — Включение устройства с заданным ID.
  3. start dvbdream.exe — Запуск программы просмотра ТВ (Вы прописываете путь к нужной Вам программе или не пишите эту строку совсем).

 

Что бы узнать ID заходим в Диспетчер устройств, открываете свойства нужного Вам устройства, переходите во вкладку Сведения, в выпадающем списке выбираете ИД оборудования и копируете первую строку. Если bat файл лежит не в папке с программой, тогда путь пишется в таком формате C:\dvbdream\dvbdream.exe.

Теперь мы можем создать ярлык батника на рабочем столе, сменить его имя к примеру на «Спутниковое ТВ», и сменить иконку на более красивую (Для смены значка правый клик по ярлыку->Свойства и нажать кнопку «Сменить значок»). При запуске ярлыка у нас сначала перезапуститься устройство, а потом уже включится программа:)

Rating: 4.65/5. From 42 votes.
Please wait...

Comments

  1. полезная вещь

    0
    Be the first one to like this.
    Please wait...
  2. Огромное спасибо! Искал весь вечер как включать и выключать устройство батником, не заходя в диспетчер. Теперь батник для моих целей, запускается автоматически с помощью стандартного планировщика!

    0
    Be the first one to like this.
    Please wait...
    1. Стас, рад помочь! В свое время тоже долго искал.

      0
      Be the first one to like this.
      Please wait...
  3. не помогло. windows 7 64x
    пробовал разные устройства.

    0
    Be the first one to like this.
    Please wait...
    1. Ром, Вы нужную версию программы брали? Может неправильно ид указываете?

      0
      Be the first one to like this.
      Please wait...
  4. здесь нашел 64бит для вин 7, работает
    http://www.raymond.pro/poleznye-programmy/skriptovanie/rabota-s-ustrojstvami-iz-komandnoj-stroki-devcon-exe-x64

    0
    Be the first one to like this.
    Please wait...
    1. огромное спасибо Вам! весь интернет прошарил, ничего на 64 бит не подходила. Ваша ссылка помогла.

      0
      Be the first one to like this.
      Please wait...
  5. Спасибо, очень помогло. =)

    0
    Be the first one to like this.
    Please wait...
  6. а можно сделать ярлык если устройство включено отключить если отключено включить

    0
    Be the first one to like this.
    Please wait...
  7. На планшете не систематизировано, при переходе в сон отключался сенсорный экран, приходилось перезапускать с помощью стилуса в диспетчере устройств.
    Решил написать программу,с ярлыком на рабочем столе для перезапуска, но т.к не программист, начал с азов программирования и пользование командной строкой. Много чего интересного подчерпнул, но цели не добился, т.к devcon в чистом виде не смог найти в интернете, пока не наткнулся на Вашу статью.
    Всё просто супер, спасибо огромное, помогло, положительных эмоций много:))

    0
    Be the first one to like this.
    Please wait...
  8. а как ее использовать с програмой… ну чтобы вырубало програму как мне указать там..

    0
    Be the first one to like this.
    Please wait...
    1. павел, эта утилита только для упраления устройствами. Для управления программами можно использовать втроенные команды.
      Запустить — start firefox.exe
      Закрыть — taskkill /f /im firefox.exe

      0
      Be the first one to like this.
      Please wait...
  9. а как переключить устройство?
    (включить если выключено и наоборот)

    0
    Be the first one to like this.
    Please wait...
    1. ih, у данной утилиты есть параметр «status», можно его использовать для того что бы узнать в каком состоянии устройство и на основе этого условием(if) влючать или выключать его.
      Для примера: devcon status «PCI\VEN_115D&DEV_0003&SUBSYS_0181115D»

      0
      Be the first one to like this.
      Please wait...
  10. Напишите пожалуйста полностью. Как это будет выглядеть с If ? Я в этом плохо разбираюсь. Очень надо. Заранее благодарю.

    0
    Be the first one to like this.
    Please wait...
    1. Использую такой cmd-файл:
      devcon.exe status «нашID» |find «running» &&(devcon.exe disable «нашID» & exit /B)
      devcon.exe enable «нашID»
      Т.е. результат выполнения команды devcon status, содержащий текущий статус устройства, будет направлен команде find. Если она найдёт слово «running» (а devcon напишет или running, или disabled), то завершится без ошибки, устройство будет отключено и сценарий завершён. Иначе выполняется команда включения устройства.

      0
      Be the first one to like this.
      Please wait...
      1. Спасибо за ответ. Но моя задача немного сложнее. При загрузке системы, устройство чаще всего не запускается.
        Вот, что выдаёт:

        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. Знаю, что нужно использовать if,findstr, for, но как это реализовать — не знаю.
        Обновление драйверов не предлагать. Устройство устаревшее, и чего я только не перепробовал, и не только я — всё бесполезно.

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

        0
        Be the first one to like this.
        Please wait...
        1. Попробуем так:
          :rest
          devcon.exe status «HID\VID_0457&PID_1028&*» |find «running» ||(devcon.exe restart «HID\VID_0457&PID_1028&*» & goto rest)

          0
          Be the first one to like this.
          Please wait...
        2. Разумеется, VID/PID свой нужно поставить.

          0
          Be the first one to like this.
          Please wait...
  11. Подскажите, пожалуйста, какие следы оставляет использование devcon на удаленном компьютере? Реестр, журналы и тд. Спасибо.

    0
    Be the first one to like this.
    Please wait...
  12. А если на сервере имеется два одинаковых сетевых адаптера, которые агрегированы (LACP) один из которых капризничает, нужно его перезапустить не трогая второй а ID у них одинаковый?

    0
    Be the first one to like this.
    Please wait...
    1. SalaVila, если ID у них одинаковый, то скорее всего эти адаптеры являются одним устройством. Как Вы сейчас решаете проблему? К примеру вручную перезапускаете в диспетчере утройств или может быть в сетевых подключениях перевключаете адаптер?
      Если через сетевые подключения, можно попробовать следующий вариант:
      netsh interface set interface name=»Подключение по локальной сети» admin=DISABLED
      netsh interface set interface name=»Подключение по локальной сети» admin=ENABLED

      0
      Be the first one to like this.
      Please wait...
  13. А у меня не видит устройство

    C:\Users\admin\Desktop>C:\Windows\System32\devconx64.exe disable «HID\VID_258A&PID_1205&REV_0100&MI_01&Col01»
    HID\VID_258A&PID_1205&MI_01&COL01\7&1154B406&0&0000 : Disable failed
    No matching devices found.

    Вроде всё правильно указал

    0
    Be the first one to like this.
    Please wait...
    1. причём если сделать enable, то всё нормально отрабатывает
      Понять не могу в чём может быть дело

      0
      Be the first one to like this.
      Please wait...
      1. Drimoos, попробуй указать «HID\VID_258A&PID_1205&REV_0100» или «HID\VID_258A&PID_1205».
        По идее нужен VID, PID и вроде как REV

        0
        Be the first one to like this.
        Please wait...
        1. Аналогичная ситуация: enable норм находит, а при disable говорит, что не находит. Как же быть? Как быть? Ребята, подскажите!

          0
          Be the first one to like this.
          Please wait...
          1. vanushkin, Привет. Последнее что мы выяснили с Drimoos у него был файл в неправильной кодировке, цитирую:

            «Меня тоже смутили иероглифы в окне CMD. Во всем виновата кодировка. Должна быть UTF без ВОМ. Все заработало!!!. И великолепно!. Буду дальше экспериментировать с другими устройствами и их ID.»

            И вот содержимое bat файла триггера который я написал для включения/выключения устройства при его запуске. Цитирую:
            ———————————————————
            Вот код который проверил лично, у меня все работает

            ~~~
            set ID=»USB\VID_093A&PID_2700&REV_0100&MI_00″
            set DEVDIR=»C:\Windows\system32″

            %DEVDIR%\devcon.exe status %ID% | find «running» && (%DEVDIR%\devcon.exe disable %ID% & exit /B)
            %DEVDIR%\devcon.exe enable %ID%
            ~~~

            Вместо ID пишешь свое устройство
            В DEVDIR пишешь путь к своему devcon.exe без слеша в конце.
            Остальное не трогаешь.
            ———————————————————
            ID и DEVDIR нужно указывать только в двух первых сроках.

            0
            Be the first one to like this.
            Please wait...
  14. На WIN 10 ни кто не подскажет, как установить?

    0
    Be the first one to like this.
    Please wait...
    1. https://superuser.com/questions/1002950/quick-method-to-install-devcon-exe
      тут посмотрите, обратите внимание на Windows Build

      0
      Be the first one to like this.
      Please wait...
  15. Всем приыет!

    0
    Be the first one to like this.
    Please wait...
  16. Привет автор блога!
    спасибо за такую полезную тему!

    0
    Be the first one to like this.
    Please wait...
  17. А как можно остановить только определенное устройство из списка одинаковых, например выдает:
    ………………………
    USB\VID_04B9&PID_1000\7&33568E1&0&4 : Rainbow iKey 1000
    USB\VID_04B9&PID_1000\8&268B7691&0&2 : Rainbow iKey 1000
    ………………………

    0
    Be the first one to like this.
    Please wait...
  18. Спасибо, полезно!
    У меня наушники (USB) при старте системы перестали заводиться. Тоже хотелось автоматизировать процесс их переподключения.
    Но вот если пытаться нормально работающие отключать такой командой — отписывается что готов это сделать, но просит перезагрузки. А вот если устройство в ошибке, то все норм срабатывает. Так что добавил проверку, что устройство не работает, только тогда переподключать. Вот код bat файла, может кому пригодится.

    @echo off
    set ID=»USB\VID_0D8C&PID_013C&REV_0100&MI_00″
    set DEVDIR=»C:\Windows\system32″

    %DEVDIR%\devcon.exe status %ID% | find «running»
    IF NOT errorlevel 1 (echo Headset is OK & goto END)
    echo Trying to reset the Headset
    devcon disable %ID%
    devcon enable %ID%

    :END

    0
    Be the first one to like this.
    Please wait...
  19. Спасибо за наводку.
    Новости по теме: на суперюзере https://superuser.com/questions/1002950/quick-method-to-install-devcon-exe в последних комментах темы есть ссылка на девкон инсталлер, выложенный на гитхабе. https://github.com/Drawbackz/DevCon-Installer
    Работает на 22H2, нужно всего лишь обновить онлайн кнопкой, в списке доступных ОС появляется требуемая версия.
    Сейчас займусь своей проблемой.

    0
    Be the first one to like this.
    Please wait...
  20. Спасибо, devconx64 помог!

    0
    Be the first one to like this.
    Please wait...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *