Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] скрипт записи devicepath

Пользователь


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

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


Изменения
Автор: netsupport
Дата: 18-06-2010
У меня по сети расшарены драйвера и требуется чтобы они устанавливались автоматически, но
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

господа помогите реализовать данный скрипт (:

Отправлено: 15:31, 18-06-2010

 

Пользователь


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

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


неужели никто не сталкивался с этим?

Отправлено: 09:13, 19-06-2010 | #2



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

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


Аватара для zonderz

Ветеран


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

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


netsupport,

setdevicepath.exe

вы не пользуетесь поиском и задаете вопросы, обсуждавшиеся тысячи раз... и так во всех ваших темах... поэтому вам никто и не отвечает подолгу...

-------
MCP, MCSA, MCSE, разработчик программы CMDTools
http://forum.oszone.net/thread-170783.html


Отправлено: 16:42, 19-06-2010 | #3


Пользователь


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

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


zonderz,
я честно вбивал в поиск и в этом раздел и в разделе Автоматической установки "devicepath" но ничего не находилось, сейчас конечно ещё попытаюсь но пока не могу найти обсуждения этой темы

Отправлено: 12:49, 21-06-2010 | #4


Пользователь


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

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


Есть скрипт
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set ROOT=C:\Drivers
Set WSIF=C:\TEST\winnt.sif

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 [Unattended]>>"%WSIF%"
Echo OemPnPDriversPath="%OemPnPDriversPath:~1%">>"%WSIF%"
Мне просто нужно помочь сделать вывод путей в нужное место в reg файле и чтобы в начале каждого пути подставлялся нужный мне путь(в данном случае \\192.168.200.1


Добавлено:
Поправил скрипт чтобы выводил результаты в команду которая добавляет изменения в реестре:



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

Последний раз редактировалось netsupport, 21-06-2010 в 17:34. Причина: правка кода


Отправлено: 14:45, 21-06-2010 | #5


Пользователь


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

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


фух, после многих модификацией и проверок готово.
В итоге скрипт выглядит так:
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) пока не могу понять как

Отправлено: 17:44, 21-06-2010 | #6


Googler


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

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


Цитата netsupport:
нужно перед каждым путём добавлять один и тот же нужны путь »
Код: Выделить весь код
Set ROOT=D:\Drivers\c
Set NETP=\\192.168.200.1\Drivers
Set DevicePath=%%systemroot%%\inf

PushD %ROOT%|| Exit
For %%i In ("%ROOT%") Do Set ROOT=%%~si
For /F "Delims=" %%i In ('DIR /B/S/AD *') DO If Exist %%~si\*.inf (
Set $D=%%~si& Call Set DevicePath=%%DevicePath%%;%NETP%%%$D:%ROOT%=%%)

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion /v DevicePath /t REG_EXPAND_SZ /d "%DevicePath%" /f

Отправлено: 10:50, 22-06-2010 | #7


Пользователь


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

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


Ммм..что-то не так формируется, т.е. лишняя "Y:\", по мне так надо просто убрать из скрипта "$D:", но это не помогает ((

Код: Выделить весь код
Set ROOT=\\77.50.100.46\drivers\c
Set NETP=\\77.50.100.46\drivers\
Set DevicePath=%%systemroot%%\inf

PushD %ROOT%|| Exit
For %%i In ("%ROOT%") Do Set ROOT=%%~si
For /F "Delims=" %%i In ('DIR /B/S/AD *') DO If Exist %%~si\*.inf (
Set $D=%%~si& Call Set DevicePath=%%DevicePath%%;%NETP%%%$D:%ROOT%=%%)

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion /v DevicePath /t REG_EXPAND_SZ /d "%DevicePath%" /f

pause
Получается так:
%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; и т.д.

Последний раз редактировалось netsupport, 22-06-2010 в 14:46.


Отправлено: 13:46, 22-06-2010 | #8


Googler


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

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


Цитата netsupport:
Set ROOT=\\77.50.100.46\drivers\c
Set NETP=\\77.50.100.46\drivers\ »
как-то не совсем стыкуется с предыдущими постами
Код: Выделить весь код
Set NET=\\77.50.100.46\Drivers
Set DIR=\\77.50.100.46\Drivers\c

Set DevicePath=%%SystemRoot%%\inf
PUSHD %DIR%

For /F "Delims=" %%i In ('DIR /B/S/AD *') Do If Exist "%%i\*.inf" Call Set "DevicePath=%%DevicePath%%;%NET%%%~pnxi"
REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion /v DevicePath /t REG_EXPAND_SZ /d "%DevicePath%" /f

Последний раз редактировалось amel27, 23-06-2010 в 12:21.

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

Отправлено: 16:19, 22-06-2010 | #9


Пользователь


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

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


Как, то странно получается
я не могу указывать в 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"

Отправлено: 17:39, 22-06-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрипт на добавление прав записи DDNMazafaka Скриптовые языки администрирования Windows 3 29-08-2009 01:18
Разное - [решено] Создается папка учетной записи после ее переименованияУчётные записи stan7307 Microsoft Windows 2000/XP 28 14-09-2008 18:49
Скрипт Kobrin Вебмастеру 5 07-07-2008 05:41
[решено] В чем отличия учетной записи Пользователь от учетной записи Опытный Пользователь??? Ivan_PIV Microsoft Windows 2000/XP 3 22-03-2007 06:23
Скрипт Guest Программирование и базы данных 3 27-08-2004 14:12




 
Переход