3

Я пытаюсь автоматизировать установку драйвера PnP для Windows 7 с помощью одного из приведенных ниже пакетных файлов с помощью цикла For и подстановочного знака для файла .inf.

Пакет rundll32 считывает и выводит на экран правильный файл .inf, но затем выдает "Ошибка установки при сбое ", а с pnputil он запускает без ошибок, не устанавливается.

Как я могу исправить пакетные файлы для правильной установки inf?

@echo off&color a&setlocal enabledelayedexpansion
cd %~dp0

set PnP=rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 .\*.inf
for /f "delims=" %%a in ('dir/b %PnP%') do (
echo == Installing PnP Drivers == "%%a"
::or
set PnP=pnputil -i -a "*.inf"
for /f "delims=" %%a in ('dir/b %PnP%') do (
echo == Installing PnP Drivers == "%%a"

ping -n 3 localhost 1>nul
start "" /wait %PnP%\%%a
)
cls
echo. * DONE *
pause
exit

3 ответа3

2

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

Протестировано и работает на Windows 7 и Windows 8 с более чем 25-минутной установкой драйвера.

@echo off&color a && Title [ MULTI .INF INSTALLER ]

::= Multi-PnP.Installer.cmd =
:: Put all Pnf, Infs, Cat, Sys files etc.
   together in same directory.

:: Run Batch From Current Directory 
cd %~dp0

:: Scan and Echo .inf files during install
for /f "delims=" %%a in ('dir/b *.inf') do (
echo == Installing PnP Drivers == "%%a"

:: Delay
ping -n 4 localhost 1>nul

:: Windows Plug Play Installer
start "" pnputil -i -a %%a
)
cls
echo. * DONE *
Echo.&Echo.&Echo.
echo == Reboot To Finalize Driver Installs! ==&pause>nul
exit
0

Сценарий, который вы создали, требует запуска файла .bat внутри папки со всеми файлами INF драйвера, что может быть немного проблематично, если есть какие-либо файлы .dll или .sys с одинаковыми именами. Я немного изменил его, чтобы он выполнял более глубокий поиск, чтобы вы могли каталогизировать несколько драйверов из каталогов внутри одной и той же папки, что и .bat, для более чистого и более организованного подхода!

@echo off&color a && Title [ MULTI .INF INSTALLER ]

::= Multi-PnP.Installer.cmd =
:: Put all Pnf, Infs, Cat, and Sys files etc. in directories inside this one!

:: Run Batch from current directory
cd %~dp0

:: Scan and Echo .inf files duing install
for /f "tokens=* delims=" %%a in ('dir /b /s /o:gen *.inf') do (
echo == Installing PnP Drivers == "%%a"

:: Delay
ping -n 4 localhost 1>nul

:: Windows Plug-n-Play Installer
start "" pnputil -i -a %%a
)
echo * DONE *
Echo.&Echo.&Echo.
echo == Reboot to finalize driver installs! ==&pause>nul
exit

Я использовал этот сценарий после извлечения CAB-файлов драйвера Dell для моделей, которые мы используем в офисе, чтобы создать универсальный образ, который может устанавливать окна с драйверами для обеих моделей, предварительно загруженных в систему, просто извлеките CAB-файлы куда-нибудь и запустите Код, из которого вы извлекли данные, и он извлечет все найденные драйверы. Единственное время, когда требуется взаимодействие с человеком, - это предупредить вас о сторонних драйверах.

Спасибо кстати! Я бы не понял это, если бы не нашел этот пост! Сделал мою жизнь намного проще!

0

Вышеприведенные сценарии работают хорошо, если вы размещаете драйверы на машине, которую собираетесь обновлять, но не работаете по сети с файлами, хранящимися на общем ресурсе сервера, поэтому я создал нижеприведенное (основано на других сценариях на этой странице) который делает. My Script имеет некоторые дополнения, такие как определение количества ini-файлов в папке и подпапках и предоставление количества установок, плюс он отображает только имя ini-файла драйвера, а не полный путь (который может быть длинным и не нужен). Я надеюсь, что кто-то найдет это полезным ...

@echo off && Title [MULTI.INF INSTALLER]
:: Поместите все файлы Pnf, Infs, Cat, Sys и т.д. В каталоги внутри этой
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setlocal ENABLEDELAYEDEXPANSION

:: Запустить пакет из текущего каталога
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
кд% ~ дп0

:: Установка переменных
:: ~~~~~~~~~~~~~~~~~
установить mypath =% ~ dp0
set Full_list_of_files =% USERPROFILE%\Full_list_of_files.txt
set list_of_INI_files =% USERPROFILE%\list_of_INI_files.txt
set line_count =% USERPROFILE%\line_count.txt
установить счетчик = 0
установить inf_total = 0
установить короткое имя = 0
:: Удаление созданных файлов, если они уже существуют
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
если существует% Full_list_of_files% del /f /q% Full_list_of_files%
если существует% list_of_INI_files% del /f /q% list_of_INI_files%
если существует% line_count% del /f /q% line_count%

:: Сканирование и Echo .inf файлы во время установки
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ЦБС
эхо ------------------------------------------------- ---------------------------
echo% date%% time% Создание списка файлов INF. Подождите пожалуйста ...
dir% mypath% /b /s /-p /o: gen>% Full_list_of_files%
Тип% Full_list_of_files% | C:\Windows\system32\findstr /i /l ".inf">% list_of_INI_files%
введите% list_of_INI_files% | найти /V /C "" >>% line_count%
Set /p inf_total = <% line_count%
del /f /q% line_count%
del /f /q% Full_list_of_files%
echo% date%% time% Запуск установки драйвера
эхо ------------------------------------------------- ---------------------------
for /f "tokens = * delims =" %% a in (% list_of_INI_files%) do (установить var = %% a) && (установить короткое имя = %% ~ nxa) && Call: process
goto: окончание
:процесс
set /a counter =% counter%+1
echo Установка драйвера% counter% of% inf_total%: "% short_name%"
start pnputil -i -a% var%
ping -n 3 localhost 1> nul
goto: eof
: окончание
Echo. & Echo. & Echo.
эхо ------------------------------------------------- ---------------------------
эхо.
echo% date%% time% Установка драйвера завершена.
эхо ------------------------------------------------- ---------------------------
del /f /q% list_of_INI_files%
echo Пожалуйста, перезагрузитесь, чтобы завершить установку драйвера и сделать паузу> nul
Endlocal
выход

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .