Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск и запуск bat файла на съемных носителях (http://forum.oszone.net/showthread.php?t=333442)

vampir225 26-02-2018 23:08 2800417

Поиск и запуск bat файла на съемных носителях
 
Всем доброго времени суток. Помогите решить проблемку. Сделал автоматическую установку Windows с установленным софтом, создал файл ответов и файл autoinstall.cmd, который запускается при первом входе в систему. Содержимое этого файла - это запуска батника для установки драйверов. Так вот, папка с драйверами лежит на диске C. Но она занимает крайне много места, хотелось бы не нагружать образ драйверами, а чтобы autoinstall.cmd искал этот батник на съемном диске С и вызывал (call) его оттуда. Но по скольку съемный диск каждый раз имеет разную букву, то его сначала надо найти. Предполагаю что это делается с командой for, но там столько переменных, что я пока не могу разобраться сам с ними

mwz 26-02-2018 23:34 2800424

Цитата:

Цитата vampir225
Но по скольку съемный диск каждый раз имеет разную букву, то его сначала надо найти. »

Вы исходный батник с этого сменного диска запускаете?

Если да, то использование в батнике модификатора %~d0 возвращает имя диска (без слэша после него), а %~dp0 — путь к батнику, включающий имя диска и слэш, завершающий путь.

Можете посмотреть результат работы батника при запуске из разных каталогов и с разных дисков:
Код:

echo %~d0
echo %~p0
echo %~dp0
pause


vampir225 27-02-2018 01:05 2800445

Цитата:

Цитата mwz
Вы исходный батник с этого сменного диска запускаете? »

Нет, изначально запускается autoinstall.cmd, который лежит на диске C. В autoinstall.cmd команда call C:\DRP\SDI_auto.bat -autoinstall -autoclose

Patroklos 27-02-2018 03:58 2800451

Вот пример. Сможете сами адаптировать под свои нужды? Пишите если возникнут проблемы.
Код:

@echo off
Title .NET Framework 3.5 Offline Installer
for %%I in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist "%%I:\\sources\install.wim" set setupdrv=%%I
if defined setupdrv (
echo Found drive %setupdrv%
echo Installing .NET Framework 3.5...
Dism /online /enable-feature /featurename:NetFX3 /All /Source:%setupdrv%:\sources\sxs /LimitAccess
echo.
echo .NET Framework 3.5 should be installed
echo.
) else (
echo No installation media found!
echo Insert DVD or USB flash drive and run this file once again.
echo.
)
pause


mwz 27-02-2018 10:09 2800472

Цитата:

Цитата Patroklos
for %%I in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist "%%I:\\sources\install.wim" set setupdrv=%%I »

А можно и модифицировать этот метод, положив на флешку пустой маркерный файл с необычным именем типа n7ak2gnfwnlo (это я сгенерил используя утилиту PWGen), положить его в корень флешки и искать его. Что убережёт от возможных ложных срабатываний в некоторых конфигурациях.

yurfed 27-02-2018 10:36 2800480

vampir225, может не совсем понял задачу, но что вам мешает сделать autorun.inf на флешке? Воткнули, согласились с автозапуском и поехали. Но это если вы не отключили автозапуск для съёмных носителей.
Или вообще, закинуть ваш autoinstall.cmd в автозагрузку.

vampir225 27-02-2018 12:25 2800503

Сделал вот такое
Код:

@echo off
set n=\DRP\SDI_auto.bat
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir "%%I:%n%"&&call "%%I:%n%"  -autoinstall -autoclose && goto sys
:sys
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v 2 /t REG_SZ /d "C:\links\Bat\2.exe"
cls
start "" "systempropertiescomputername.exe"
exit

сначала идет поиск файла, затем если он находится, то его запуск.
Потом создается задача на единовременный запуск, и после этого выходит окно с свойствами системы. Так вот, этот батник в системе работает нормально, но при установке windows дрова не устанавливаются.
Цитата:

Цитата yurfed
vampir225, может не совсем понял задачу, но что вам мешает сделать autorun.inf на флешке? Воткнули, согласились с автозапуском и поехали. Но это если вы не отключили автозапуск для съёмных носителей.
Или вообще, закинуть ваш autoinstall.cmd в автозагрузку. »

Вы немного не поняли меня. Мне все это надо при установке Windows на этапе первого входа в систему

vampir225 27-02-2018 12:48 2800512

Простите великодушно, но я так предполагаю, что решения не найти, т.к. все планы рушит каспер, который запрещает доступ к съемным устройствам.

lSVl 27-02-2018 16:22 2800559

drv_findrun.cmd
Код:

@echo off
SetLocal EnableExtensions  EnableDelayedExpansion
set wdir=Drivers
set filename=SDI.exe
set params=-preservecfg -license -autoinstall -autoclose
set fullpath=%wdir%\%filename%
FOR %%i IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z C) DO DIR %%i:>NUL 2>&1 && SET zz=!zz!%%i
FOR %%i IN (%zz%) DO IF EXIST %%i:\%fullpath% SET InstallMedia=%%i:
@echo start "" "%InstallMedia%\%fullpath%" %params%
pause >nul


g:\Drivers\SDI.exe

vampir225 27-02-2018 19:47 2800593

lSVl, так у меня же нет файла sdi.exe
И можно поподробнее расписать что к чему в этом коде?

Сrack 27-02-2018 20:58 2800604

Зачем батник, зачем образ перепаковывать? Я прописывал прямо в файле ответов команду, копировал файл ответов на флешку, и все. Любой оригинальный образ винды подхватывает его автоматически (при условии наличия драйверов на USB конечно) и запускает пакетное выполнение команд, а что там будет, установка драйверов, программ, импорт настроек, все что угодно. Не люблю батники, делал через оболочку MInstAll. В описании под спойлером "Запуск методом FirstLogonCommands" описан принцип и часть файла ответов. http://forum.oszone.net/thread-265582.html

vampir225 28-02-2018 11:50 2800706

Тему можно закрывать. Перепробовал все предложенные вами варианты и пришел к выводу, что Установленный в образе Kaspersky Endpoint Security блокирует внешние накопители, так что старания напрасны


Время: 23:01.

Время: 23:01.
© OSzone.net 2001-