![]() |
скрипт записи devicepath
У меня по сети расшарены драйвера и требуется чтобы они устанавливались автоматически, но
OemPnPDriversPath в файле ответов не подходит т.к. windows автоматически подставляет туда системную переменную %systemdrive% а у меня сетевые пути типа: \\192.168.200.1\drivers\c\a задача такова, скрипт(что-то вроде этого http://forum.oszone.net/showthread.p...th#post1172464) сканирует заданную папку(в нашем случае drivers) и создаёт путь к каждой папке где содержится inf файл только в алфавитном порядке( т.е. сначало drivers\c а потом уже drivers\l) к каждому пути добавляется \\192.168.200.1 например ввиде переменной %serveraddress% в итоге получается список вида: \\192.168.200.1\drivers\c\a;\\192.168.200.1\drivers\c\b;\\192.168.200.1\drivers\c\c и т.д. Эта информация записывается в reg файл в DevicePath="" параметр который находится в HKLM\Software\Microsoft\Windows\CurrentVersion господа помогите реализовать данный скрипт (: |
неужели никто не сталкивался с этим?
|
netsupport,
setdevicepath.exe вы не пользуетесь поиском и задаете вопросы, обсуждавшиеся тысячи раз... и так во всех ваших темах... поэтому вам никто и не отвечает подолгу... |
zonderz,
я честно вбивал в поиск и в этом раздел и в разделе Автоматической установки "devicepath" но ничего не находилось, сейчас конечно ещё попытаюсь но пока не могу найти обсуждения этой темы |
Есть скрипт
Код:
@Echo Off Добавлено: Поправил скрипт чтобы выводил результаты в команду которая добавляет изменения в реестре: SetLocal EnableDelayedExpansion Set ROOT=D:\Drivers\c set DIR=%systemroot%\inf PUSHD %ROOT% For %%i In ("%ROOT%") Do If Exist %%i (Set ROOT=%%~si&Set $R=%%~nxsi) Else Exit For /F "Delims=" %%i In ('DIR /B/S/A:D *') DO ( Set $D=%%~si If Exist !$D!\*.inf Set OemPnPDriversPath=!OemPnPDriversPath!;!$R!!$D:%ROOT%=! ) Echo OemPnPDriversPath="%OemPnPDriversPath:~1%">>"%DIR%" REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion /v DevicePath /t REG_EXPAND_SZ /d %DIR% /f pause Но не работает. если посмотреть вывод в командной строке, то: D:\drivers\c>Echo OemPnPDriversPath="c\A;c\A2;c\A4;c\A5;c\A6;c\A7;c\Ak;c\At;c\D; c\E;c\F;c\H;c\I;c\I4;c\I5;c\I6;c\Ia;c\Ib;c\Ic;c\Id;c\Ie;c\IN;c\IT;c\K;c\N;c\N1;c \N2;c\N3;c\N4;c\S;c\T;c\U;c\V;c\V2;c\V3;c\VX;c\I2\1;c\I2\2;c\I2\3;c\I2\4;c\I2\5" 1>>"C:\Windows\inf" Отказано в доступе. В DevicePath добавляется в итоге просто текст C:\Windows\inf |
фух, после многих модификацией и проверок готово.
В итоге скрипт выглядит так: SetLocal EnableDelayedExpansion Set ROOT=D:\Drivers\c set DIR=%systemroot%\inf PUSHD %ROOT% For %%i In ("%ROOT%") Do If Exist %%i (Set ROOT=%%~si&Set $R=%%~nxsi) Else Exit For /F "Delims=" %%i In ('DIR /B/S/A:D *') DO ( Set $D=%%~si If Exist !$D!\*.inf Set OemPnPDriversPath=!OemPnPDriversPath!;!$R!!$D:%ROOT%=! ) REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion /v DevicePath /t REG_EXPAND_SZ /d %OemPnPDriversPath:~1% /f pause Но нужно перед каждым путём добавлять один и тот же нужны путь т.е. в моём случаи как раз сетевой путь(в моём случае это \\192.168.200.1\drivers) пока не могу понять как |
Цитата:
Код:
Set ROOT=D:\Drivers\c |
Ммм..что-то не так формируется, т.е. лишняя "Y:\", по мне так надо просто убрать из скрипта "$D:", но это не помогает ((
Код:
Set ROOT=\\77.50.100.46\drivers\c %systemroot%\inf;\\77.50.100.46\drivers\Y:\c\A;\\77.50.100.46\drivers\Y:\c\A2;\\77.50.100.46\drivers \Y:\c\A4; и т.д. |
Цитата:
Код:
Set NET=\\77.50.100.46\Drivers |
Как, то странно получается
я не могу указывать в DIR всё папку drivers это слишком много драйверов мне надо указываь Set DIR=\\77.50.100.46\Drivers\с соответственно я тогда указываю Set NET=\\77.50.100.46\drivers чтобы "drivers" фигурировал в пути в итоге формируется ерунда: "%SystemRoot%\inf;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50.100.46\drivers\c;\\77.50 .100.46\drivers\c;\\77.50.100.46\drivers\c\I2;\\77.50.100.46\drivers\c\I2;\\77.50.100.46\drivers\c\I 2;\\77.50.100.46\drivers\c\I2;\\77.50.100.46\drivers\c\I2" |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
В итоге батник спрашивает разрешение на перезапись параметра DevicePath в реестре, хотя /f стоит. причём /f также записывает в реестр, пути повторяются и первый путь почему-то \\77.50.100.46\drivers\c хотя там нету inf файла(: вот последний вывод из работы батника: Y:\c>REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion /v DevicePath /t REG _EXPAND_SZ /d "%SystemRoot%\inf;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers \c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Driver s\c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drive rs\c\A;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Driver s\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\ c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers \c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Driver s\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drive rs\c\I;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Driver s\c\N;\\77.50.100.46\Drivers\c\N;\\77.50.100.46\Drivers\c\N;\\77.50.100.46\Drive rs\c\N;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Driver s\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\V;\\77.50.100.46\Drivers \c\V;\\77.50.100.46\Drivers\c\V;\\77.50.100.46\Drivers\c\I2\;\\77.50.100.46\Driv ers\c\I2\;\\77.50.100.46\Drivers\c\I2\;\\77.50.100.46\Drivers\c\I2\;\\77.50.100. 46\Drivers\c\I2\" /f Value DevicePath exists, overwrite(Y/N)? y |
Цитата:
|
Нет, ни в одном названии папки или подпапки нету пробела или спец символа в названиях папок буквы a-z и цифры 0-10
пробую. Такс. /f срабатывает тут всё нормально. но пути неверно непонятно вот что получилось: %SystemRoot%\inf;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers\c\A;\\7 7.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers \c\A;\\77.50.100.46\Drivers\c\A;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\D rivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\I;\\77.50.100 .46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\7 7.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers \c\I;\\77.50.100.46\Drivers\c\I;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\D rivers\c\N;\\77.50.100.46\Drivers\c\N;\\77.50.100.46\Drivers\c\N;\\77.50.100.46\Drivers\c\N;\\77.50. 100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77.50.100.46\Drivers\c\;\\77 .50.100.46\Drivers\c\V;\\77.50.100.46\Drivers\c\V;\\77.50.100.46\Drivers\c\V;\\77.50.100.46\Drivers\ c\I2\;\\77.50.100.46\Drivers\c\I2\;\\77.50.100.46\Drivers\c\I2\;\\77.50.100.46\Drivers\c\I2\;\\77.50 .100.46\Drivers\c\I2\; В папке \\77.50.100.46\Drivers\c\ не содержится inf файл в ней содержаться папки уже в которых inf файлы \\77.50.100.46\Drivers\c\A; - всё верно \\77.50.100.46\Drivers\c\A; тут поидее должна быть папка A2 такое ощущение что обрезаются цифры в названии папок, но не у всех.. Вообщем для наглядности вот список папок в папке \\77.50.100.46\drivers\c: A A2 A4 |
netsupport, уже сам сообразил... туплю по тихой - проще было написать с нуля чем править =)
|
amel27 ура! заработало.
жалко что есть ограничение на входную строку, т.е. если указать всё папку Drivers(Башарт драйвера на чипсет,звук,видео,сеть), то скрипт не завершиться т.к. слишком длинная строка (( будем думать как соединить все inf файлы в один inf, надеюсь на форуме найдётся решение (: Ну и на том пока хорошо:) спс |
Время: 03:04. |
Время: 03:04.
© OSzone.net 2001-