Показать полную графическую версию : Поиск и запуск bat файла на съемных носителях
vampir225
26-02-2018, 23:08
Всем доброго времени суток. Помогите решить проблемку. Сделал автоматическую установку Windows с установленным софтом, создал файл ответов и файл autoinstall.cmd, который запускается при первом входе в систему. Содержимое этого файла - это запуска батника для установки драйверов. Так вот, папка с драйверами лежит на диске C. Но она занимает крайне много места, хотелось бы не нагружать образ драйверами, а чтобы autoinstall.cmd искал этот батник на съемном диске С и вызывал (call) его оттуда. Но по скольку съемный диск каждый раз имеет разную букву, то его сначала надо найти. Предполагаю что это делается с командой for, но там столько переменных, что я пока не могу разобраться сам с ними
Но по скольку съемный диск каждый раз имеет разную букву, то его сначала надо найти. »
Вы исходный батник с этого сменного диска запускаете?
Если да, то использование в батнике модификатора %~d0 возвращает имя диска (без слэша после него), а %~dp0 — путь к батнику, включающий имя диска и слэш, завершающий путь.
Можете посмотреть результат работы батника при запуске из разных каталогов и с разных дисков:
echo %~d0
echo %~p0
echo %~dp0
pause
vampir225
27-02-2018, 01:05
Вы исходный батник с этого сменного диска запускаете? »
Нет, изначально запускается autoinstall.cmd, который лежит на диске C. В autoinstall.cmd команда call C:\DRP\SDI_auto.bat -autoinstall -autoclose
Patroklos
27-02-2018, 03:58
Вот пример. Сможете сами адаптировать под свои нужды? Пишите если возникнут проблемы.
@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
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), положить его в корень флешки и искать его. Что убережёт от возможных ложных срабатываний в некоторых конфигурациях.
vampir225, может не совсем понял задачу, но что вам мешает сделать autorun.inf на флешке? Воткнули, согласились с автозапуском и поехали. Но это если вы не отключили автозапуск для съёмных носителей.
Или вообще, закинуть ваш autoinstall.cmd в автозагрузку.
vampir225
27-02-2018, 12:25
Сделал вот такое
@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 дрова не устанавливаются.
vampir225, может не совсем понял задачу, но что вам мешает сделать autorun.inf на флешке? Воткнули, согласились с автозапуском и поехали. Но это если вы не отключили автозапуск для съёмных носителей.
Или вообще, закинуть ваш autoinstall.cmd в автозагрузку. »
Вы немного не поняли меня. Мне все это надо при установке Windows на этапе первого входа в систему
vampir225
27-02-2018, 12:48
Простите великодушно, но я так предполагаю, что решения не найти, т.к. все планы рушит каспер, который запрещает доступ к съемным устройствам.
@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
lSVl, так у меня же нет файла sdi.exe
И можно поподробнее расписать что к чему в этом коде?
Зачем батник, зачем образ перепаковывать? Я прописывал прямо в файле ответов команду, копировал файл ответов на флешку, и все. Любой оригинальный образ винды подхватывает его автоматически (при условии наличия драйверов на USB конечно) и запускает пакетное выполнение команд, а что там будет, установка драйверов, программ, импорт настроек, все что угодно. Не люблю батники, делал через оболочку MInstAll. В описании под спойлером "Запуск методом FirstLogonCommands" описан принцип и часть файла ответов. http://forum.oszone.net/thread-265582.html
vampir225
28-02-2018, 11:50
Тему можно закрывать. Перепробовал все предложенные вами варианты и пришел к выводу, что Установленный в образе Kaspersky Endpoint Security блокирует внешние накопители, так что старания напрасны
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.