puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
Спасибо, понял, надо пробовать. Если не затруднит, еще вопрос: Подправил как мог скрипт, смущает выделенная строка. И, если все правильно, скрипт запустит или Install.wim, или install.esd ?@echo off SET DD=puh1 SET MM=win7x64 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) do ( dir /d %%I:\%DD%\%MM%\install.wim&&set DVDdrive=%%I: dir /d %%I:\%DD%\%MM%\install.esd&&set DVDdrive=%%I: ) If NOT "%DVDDrive%"=="" echo Found Install.wim at %DVDdrive%\%DD%\%MM%\install.wim IF "%DVDdrive%"=="" ( echo ERROR - COULD NOT FIND INSTALL.WIM in %DD%\%MM% folder! pause pause goto :EOF ) if exist %DVDdrive%\%DD%\%MM%\unattend.xml SET UN=/unattend:%DVDdrive%\%DD%\%MM%\unattend.xml if exist %DVDdrive%\%DD%\%MM%\OEM\nul SET OEM=/m:%DVDdrive%\%DD%\%MM%\OEM REM look for whole sources folder copied over If exist %DVDdrive%\%DD%\%MM%\setup.exe ( %DVDdrive% REM setup will use its path to find the install.wim %DVDdrive%\%DD%\%MM%\setup.exe %OEM% %UN% goto :RBT ) if not exist X:\Setup.exe goto :BAD REM if not then just call setup in root of boot.wim X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.wim %OEM% %UN% X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.esd %OEM% %UN% goto :RBT :BAD dir X:\ /b echo Cannot find X:\Setup.exe ! @echo Press a key to reboot now... pause :RBT wpeutil reboot pause
Последний раз редактировалось: puhpol (2014-12-15 21:15), всего редактировалось 1 раз
|
|
puhpol, скрипт должен запустить установщик (т.е., Setup.exe). Выделенная строка выдаёт сообщения, если найден install.wim (install.esd). Там проблем нет. А вот конструкция X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.wim %OEM% %UN% X:\setup.exe /installfrom:%DVDdrive%\%DD%\%MM%\install.esd %OEM% %UN% работать не будет (даже если найден install.esd, будет пытаться запустить install.wim - и тут будет ошибка). Правильнее было бы назначить переменную (в примере - %inst%) для install.wim или install.esd. например, так: dir /d %%I:\%DD%\%MM%\install.wim&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.wim dir /d %%I:\%DD%\%MM%\install.esd&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.esd и запускать, соответственно сразу нужное X:\setup.exe /installfrom:%inst% %OEM% %UN%
|
puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
То есть этот кусок будет выглядеть так:if not exist X:\Setup.exe goto :BAD dir /d %%I:\%DD%\%MM%\install.wim&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.wim dir /d %%I:\%DD%\%MM%\install.esd&&set DVDdrive=%%I:&&set inst=%%I:\%DD%\%MM%\install.esd X:\setup.exe /installfrom:%inst% %OEM% %UN% goto :RBT :BAD dir X:\ /b echo Cannot find X:\Setup.exe ! @echo Press a key to reboot now... pause :RBT wpeutil reboot pause Подразумевается что в папке лежит один файл , или esd , или wim
|
puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
Вот на бабочке выложили скрипт от korsak7 . Вот то что нужно , насколько я понимаю.@echo off SET DD=ИМЯ ПАПКИ SET MM=ИМЯ ПОДПАПКИ 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) do if exist %%I:\%DD%\%MM% set DVDdrive=%%I: set fullpath=%DVDdrive%\%DD%\%MM% if exist %fullpath%\install.wim set container=%fullpath%\install.wim if exist %fullpath%\install.esd set container=%fullpath%\install.esd IF "%container%"=="" ( echo ERROR - COULD NOT FIND INSTALL.WIM INSTALL.ESD in %DD%\%MM% folder! pause pause goto :EOF ) if exist %fullpath%\unattend.xml SET UN=/unattend:%fullpath%\unattend.xml if exist %fullpath%\_unattend.xml SET UN=/unattend:%fullpath%\_unattend.xml if exist %fullpath%\OEM\nul SET OEM=/m:%fullpath%\OEM if exist %fullpath%\$OEM$\nul SET OEM=/m:%fullpath%\$OEM$ :: if not exist %SystemDrive%\Setup.exe goto :BAD :: REM if not then just call setup in root of boot.xxx :: %SystemDrive%\setup.exe /installfrom:%container% %OEM% %UN% :: goto :RBT if not exist X:\Setup.exe goto :BAD REM if not then just call setup in root of boot.wim X:\setup.exe /installfrom:%container% %OEM% %UN% goto :RBT :BAD dir X:\ /b echo Cannot find X:\Setup.exe ! @echo Press a key to reboot now... pause :RBT wpeutil reboot pause
Последний раз редактировалось: puhpol (2014-12-15 21:16), всего редактировалось 1 раз
|
|
Я бы сделал как-то так (скрипт исправлен 15.12.2014)@echo off setlocal enabledelayedexpansion SET DD=2k10 SET MM=Windows.Setup SET IN=NI 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) do ( set IP=%%I:\!DD!\!MM! dir /d !IP!\install.wim&&set IN=!IP!\install.wim dir /d !IP!\install.esd&&set IN=!IP!\install.esd dir /d !IP!\install.swm&&set IN=!IP!\install.swm IF !IN! NEQ NI goto :INST ) IF %IN% EQU NI ( echo ERROR - COULD NOT FIND INSTALL.WIM(ESD,SWM) in %DD%\%MM% folder! pause pause goto:RBT ) :INST echo %IP% if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$ set ST=X:\Setup.exe if exist %IP%\Setup.exe set ST=%IP%\Setup.exe if not exist %ST% goto :BAD cd /d %IP% %ST% /installfrom:%IN% %OEM% %UN% goto :RBT :BAD dir X:\ /b echo Cannot find %ST% ! echo. :RBT exit @echo Press a key to reboot now... pause wpeutil reboot pause Отличия от скрипта Корсака: 1. Проверка наличия файла установки организована через DIR (не отрывает окно с ошибкой на отсутсвующих/повреждённых носителях). 2. Поиск ведётся до первого найденного файла с дистрибутивом (в варианте Корсака независимо от результатов поиска перебираются все диски, и используется последний найденный вариант). 3. Поиск производится для всех возможных видов дистрибутива (WIM, ESD, SWM). 4. Если в папке с дистрибутивом имеется Setup.exe, то будет использован именно он, а не X:\Setup.exeВариант поиска для использования "внешнего" скрипта установки@echo off setlocal enabledelayedexpansion For /F "skip=2 tokens=2* delims=)" %%i In ('REG QUERY HKLM\SYSTEM\ControlSet001\Control /v SystemStartOptions') DO ( SET FP=%%~pj set NM=%%~nj ) set FP=%FP:*)\=% 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) do ( dir /d %%I:\%FP%%NM%.wim&&( if exist %%I:\%FP%%NM%.cmd set (SC=%%I:\%FP%%NM%.cmd&goto:Start) if exist %%I:\%FP%winsetup.cmd (set SC=%%I:\%FP%winsetup.cmd&goto:Start) ) ) echo Script not found!!! pause exit :Start start /w %SC% exit Второй скрипт позволяет организовать универсальную установку из любой папки. Как это работает: 1. Скрипт добавляем в ядро РЕ-установщика вместо первого скрипта. 2. РЕ-установщик может находиться в любой папке (естественно, с адекватным путём). Например, РЕ-установщик в папке 2k10\WinSetup.User\setup886.wim. 3. После старта скрипта производится поиск по всем носителям установщика setup886.wim (как маркера) в нужной папке (т.е., 2k10\WinSetup.User). Если рядом (в той же папке) есть файл setup886.cmd (имя должно соовпадать с именем wim-установщика, а расширение cmd) либо winsetup.cmd, тогда управление будет передано этому файлу. Приоритетным является "именной" скрипт (setup886.cmd), т.е., при наличии обоих вариантов выполнен будет именно он. Если рядом с установщиком отсутствуют "именной" или общий (winsetup.cmd) скрипты, поиск будет продолжен. 4. В качестве "именного" или общего скриптов можно использовать первый скрипт этого сообщения, указав в нём желаемую папку хранения своих дистрибутивов.
Последний раз редактировалось: Гость (2014-12-15 21:49), всего редактировалось 6 раз(а)
|
Отправлено: 14-Дек-2014 19:02
(спустя 2 часа 8 минут)
puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
Изменяем файл BOOT.WIM (черновик) 1. Качаем архив "mu.rar", Прикреплен к сообщению, 2. Папку из архива извлекаем в корень диска С.Что в папкеПапка "imagex" - папка с программой imagex 64- и 32-битными версиями программы. Файлы: EI.CFG - нужен для пропуска ввода ключа в boot.wim от Windows 8/8.1 (для Windows 7 не нужен, в этом случае требуется правка Mod.cmd ) Mod.cmd - запускает интеграцию скриптов и файлов в boot.wim winpeshl.ini - дает команду запуска файла mysetup.cmd при загрузке boot.wim. mysetup.cmd - запускает файл set7.cmd или set8.cmd в зависимости от вашего выбора. set7.cmd - файл, запускающий установку Windows 7 (в нашем случае). Необходимо править, прописать имя папки и подпапки. set8.cmd - файл, запускающий установку Windows 8.1 (в нашем случае). Необходимо править, прописать имя папки и подпапки. 3. Идем по пути: С:\mu\imagex\ видим папки "x32" и "x64", входим в папку в зависимости от установленной системы. И запускаем с правами Администратора файл "install.bat". После этого переходим в папку С:\mu\ 4. Открываем текстовым редактором файл mysetup.cmd и, если вас что-то не устраивает, правим под свои предпочтения. 5. Открываем текстовым редактором файл set7.cmd и во второй и третьей строке прописываем имена папок, из которых будет грузиться система (то-есть, где будет лежать файл install.wim или install.esd). 5.1 Открываем текстовым редактором файл set8.cmd и во второй и третьей строке прописываем имена папок, из которых будет грузиться система (то-есть, где будет лежать файл install.wim или install.esd). 6. Проверить, все ли вы правильно отредактировали. Правильно ли прописаны имена файлов в mysetup.cmd? Правильно ли указанны имена папок в файлах set8.cmd и set7.cmd? 7. Из образа с Windows x86 извлекаем файл boot.wim в папку "mu" (находится в папке "sources"). 8. От имени Администратора запускаем файл Mod.cmd. Появится окошко, в котором можно контролировать процесс интеграции файлов в образ (сначала монтируется образ, потом копируются файлы и сохранение изменений). После закрытия окна ваш boot.wim готов. 9. Готовый файл обязательно переименовать или перенести куда нибудь (я просто переименовываю в bootх86.wim). Так как мы изменили загрузчик только для 32-битной системы. 10. Из образа с Windows x64 извлекаем файл boot.wim в папку "mu" (находится в папке "sources"). 11. От имени Администратора запускаем файл Mod.cmd. Появится окошко, в котором можно контролировать процесс интеграции файлов в образ (сначала монтируется образ, потом копируются файлы и сохранение изменений). После закрытия окна ваш boot.wim готов. Таким образом, при загрузке файла boot.wim (предустановочной среды Windows) будет запускаться файл mysetup.cmd, где будет предложено выбрать какую систему ставить. И, в зависимости от вашего выбора, будет запущен файл set8.cmd или set7.cmd.Если используется boot.wim от Windows 7 Если используется boot.wim от Windows 7 то файл EI.CFG не нужен. Файл можно не удалять из папки, нужно отредактировать файл Mod.cmd Открываем файл "Блокнотом" и удаляем выделенные строки. cls @echo off pushd %cd% REM set the path here SET MP=%CD% IF "%MP%"=="\" SET MP= if not exist %MP%\winpeshl.ini ( echo %MP%\winpeshl.ini not found! echo This script should be in the same folder as your bootmgrx files goto :EOF1 ) IF NOT EXIST %MP%\boot.wim ( echo ERROR %MP%\boot.wim does not exist! goto :EOF1 ) REM to create an empty MOUNT folder if not exist C:\MOUNT\NUL MD C:\MOUNT SET IMGNO=2 Echo mounting the 2nd image in the wim file onto your C:\mount folder... IMAGEX /mountrw %MP%\boot.wim 2 c:\mount if errorlevel 1 echo IMAGE #2 NOT FOUND IN BOOT.WIM - trying image #1... if errorlevel 1 SET IMGNO=1 if errorlevel 1 IMAGEX /mountrw %MP%\boot.wim 1 c:\mount if errorlevel 1 echo IMAGE #1 NOT FOUND if errorlevel 1 goto :EOF12 echo IMAGE #%IMGNO% mounted OK echo Copying over the winpeshl.ini and mysetup.cmd files copy %MP%\winpeshl.ini C:\mount\windows\system32\*.* if errorlevel 1 goto :EOFERR copy %MP%\mysetup.cmd C:\mount\windows\system32\*.* if errorlevel 1 goto :EOFERR copy %MP%\set7.cmd C:\mount\*.* if errorlevel 1 goto :EOFERR copy %MP%\set8.cmd C:\mount\*.* if errorlevel 1 goto :EOFERR copy %MP%\EI.CFG C:\mount\sources\*.* if errorlevel 1 goto :EOFERR echo Saving changes in boot.wim... IMAGEX /unmount /commit C:\MOUNT if errorlevel 1 goto :EOF1 echo Files added to %MP%\boot.wim (image %IMGNO%) OK goto :EOF :EOFERR echo ERROR FOUND - so dismounting boot%IM%.wim without saving any changes! IMAGEX /unmount C:\MOUNT goto :EOF :EOF12 echo ERROR mounting boot&.wim using ImageX !!! :EOF1 pause Изучаем выделенное жирным шрифтом. ПРИМЕЧАНИЯ: Скриптов для установки системы (set8.cmd и set7.cmd) может быть сколько угодно. Чтобы добавить дополнительные скрипты, нужно дописать их интеграцию в boot.wim в файле Mod.cmd (под спойлером смотрим выделенное жирным, то-есть копировать две строчки с изменением имени файла). Так же требуется редактирование файла mysetup.cmd (там вроде все понятно). Если скрипты set8.cmd и set7.cmd копировать на носитель, с которого вы будете все это дело загружать. А в папку, где у вас лежит install.wim копировать все содержимое папки "sources" из дистрибутива Windows (кроме boot.wim), при запуске файла set8.cmd или set7.cmd под Windows PE начнется установка Windows. То-есть, запуск set8.cmd запустит установку системы, если запущен под какой-то сборкой (обязательно наличие всего содержимого папки "sources" из дистрибутива Windows. Так как в скрипте прописан запуск двух вариантов установки: Запуск файла setup.exe из X:\Setup.exe (файл boot.wim, предустановочная среда Windows), или запуск файла setup.exe из указанной в файле set7.cmd папки. Если вы используете русский образ boot.wim, можно русифицировать скрипты. Для этого: открыть файл mysetup.cmd, например, редактором Notepad++. Выбрать кодировку кирилица/OEM 666 переписать нужные фразы. Повторить действия для set8.cmd и set7.cmd.Пример mysetup.cmdTITLE УСТАНОВКА WINDOWS @echo off cls color 27 echo. echo. echo 1 = Установить Windows 8.1 echo. echo 2 = Установить Windows 7 echo. echo. SET /P ANS="Какую систему будем ставить? (нажмите 1 или 2 ): " IF /I "%ANS%"=="1" start X:\set8.cmd IF /I "%ANS%"=="2" start X:\set7.cmd pauseset7.cmd@echo off SET DD=ИМЯ ПАПКИ SET MM=ИМЯ ПОДПАПКИ SET IN=NI 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) do ( set IP=%%I:\%DD%\%MM% dir /d %IP%\install.wim&&set IN=%IP%\install.wim dir /d %IP%\install.esd&&set IN=%IP%\install.esd IF %IN% NEQ NI goto:INST ) IF %IN% EQU NI ( echo ОШИБКА - нет файлов INSTALL.WIM INSTALL.ESD в %DD%\%MM% ! pause pause goto:RBT ) :INST if exist %IP%\unattend.xml SET UN=/unattend:%IP%\unattend.xml if exist %IP%\_unattend.xml SET UN=/unattend:%IP%\_unattend.xml if exist %IP%\OEM\nul SET OEM=/m:%IP%\OEM if exist %IP%\$OEM$\nul SET OEM=/m:%IP%\$OEM$ set ST=X:\Setup.exe if exist %IP%\Setup.exe set ST=%IP%\Setup.exe if not exist %ST% goto :BAD %ST% /installfrom:%IN% %OEM% %UN% goto :RBT :BAD dir X:\ /b echo Нет файла %ST% ! echo. :RBT @echo Press a key to reboot now... pause wpeutil reboot pause Если скрипт в русской кодировке интегрировать в английскую версию boot.wim, вместо руских букв будут кракозяблики.
Последний раз редактировалось: puhpol (2014-12-15 11:16), всего редактировалось 1 раз
|
Andrei888
- Стаж: 10 лет
- Сообщений: 11
- Репутация:0[+] [-]
- Откуда: КАЗАКСТАН
|
Здравствуйте. Нужно ли все извлекать из папки sources, а что будет если только один файл insatal.wim?
|
puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
zxen, Привет! Спасибо большое! Завтра буду тестить.894Здравствуйте. Нужно ли все извлекать из папки sources, а что будет если только один файл insatal.wim? Приветствую. Если не запускать установку под сборкой какой (ВИН РЕ) то достаточно одного insatal.wim
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
891Изменяем файл BOOT.WIM (черновик) Кстати, WIM-ы умеет изменять 7z - без лишнего шаманства и многостраничных инструкций :)
|
puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
korsak7, Ваш скрипт мне более понятен. Только я маленько подправил закомментированную вами часть...@echo off SET DD=ИМЯ ПАПКИ SET MM=ИМЯ ПОДПАПКИ 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) do if exist %%I:\%DD%\%MM% set DVDdrive=%%I: set fullpath=%DVDdrive%\%DD%\%MM% if exist %fullpath%\install.wim set container=%fullpath%\install.wim if exist %fullpath%\install.esd set container=%fullpath%\install.esd IF "%container%"=="" ( echo ERROR - COULD NOT FIND INSTALL.WIM INSTALL.ESD in %DD%\%MM% folder! pause pause goto :EOF ) if exist %fullpath%\unattend.xml SET UN=/unattend:%fullpath%\unattend.xml if exist %fullpath%\_unattend.xml SET UN=/unattend:%fullpath%\_unattend.xml if exist %fullpath%\OEM\nul SET OEM=/m:%fullpath%\OEM if exist %fullpath%\$OEM$\nul SET OEM=/m:%fullpath%\$OEM$ if not exist %fullpath%\Setup.exe goto :BAD REM if not then just call setup in root of boot.xxx %fullpath%\setup.exe /installfrom:%container% %OEM% %UN% goto :RBT if not exist X:\Setup.exe goto :BAD REM if not then just call setup in root of boot.wim X:\setup.exe /installfrom:%container% %OEM% %UN% goto :RBT :BAD dir X:\ /b echo Cannot find X:\Setup.exe ! @echo Press a key to reboot now... pause :RBT wpeutil reboot pause
Последний раз редактировалось: puhpol (2014-12-21 13:40), всего редактировалось 1 раз
|
Отправлено: 15-Дек-2014 14:14
(спустя 2 часа 43 минуты)
|
puhpol, подправил свой скрипт на 3-й страничке. Теперь должен работать правильно.
|
puhpol
- Стаж: 10 лет
- Сообщений: 891
- Репутация:75[+] [-]
|
conty9, Доброго времени. Спасибо! Сам уже пол дня вожусь, да толку мало. Есть вопрос: А как в CMD заставить использовать или ecd или wim. То-есть, есть ли какое значение, которое заменяло бы значение слова ИЛИ ?
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
953korsak7, Ваш скрипт мне более понятен. Только я маленько подправил закомментированную вами часть... По идее надо вообще скрипт переделывать , чтобы переменные с путями DD и MM были вне boot.wim
|
|
puhpol, заставить-то, думаю, можно... Те же dir или if exist воспримут install.* и обработают правильно... Но ведь переменной нужно передать точное имя с расширением.
|
Страница 2 из 19
Текущее время: 21-Ноя 17:56
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|