Создание загручной флешки Window 7 с помощью командного файла
Написал командный файл, для автоматизации создания загрузочного USB-драйва с Windows 7, без стороннего софта.
Для работы нужна флешка, с объемом минимум 4Гб + инсталляционный диск Windows 7 Предупреждение: USB-драйв будет отформатирован под файловую систему NTFS! Создаем командный файл с именем win72usb.cmd (скачать готовый файл можно здесь) запускать win72usb.cmd с правами администратора... следовать инструкциям на экране... (обновленный код - 27.1.2011) ЗЫ: Просьба, ногами сильно не бить! Если есть конкретные предложения по усовершенствованию батника - с удовольствием послушаю (прочту)... |
Код:
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:\bootmgr set CDROM=%%i: P.S. В предположении, что мы запускаем пакетный файл из-под «Windows 7», ибо ниже есть упоминание «choice.exe», которая в XP отсутствует. Следом ещё одна: Код:
@echo off Код:
echo list disk>c:\script1.txt И, если уж вывод «diskpart» предлагается для последующего выбора, то его (вывод) стоит фильтровать, отображая ровно то, что является значимым для задачи. Код:
choice /C 01234 /M "6. Choose your USB-drive number". Код:
set FLASH=0 Код:
set /a FLASH=%ERRORLEVEL% - 1 Очередная, уже третья: Код:
@echo off Код:
echo clean>>c:\script2.txt Сначала Вы пишете, что: Цитата:
Такое впечатление, что Вы сложили в одну кучу несколько пакетных файлов, не слишком заботясь об их приведении к мало-мальски единому целому. Как-то так. |
Цитата:
Очень давно батники не писал..)) Недавно, сел и за час накатал, от нечего делать... А временные файлы таки удаляются, в конце кода... Цитата:
Все таки, цель была батник написать, а не целую программу... Хотя, можно и проверки вставить. Цитата:
|
Зачем флешку в NTFS форматировать? Чем fat не подходит?
Одну команду в diskpart можно передать входящим потоком: Код:
echo list disk | diskpart |
Цитата:
Цитата:
подредактировал Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Итак, вот что получилось: Код:
@echo off |
В продолжение об:
Цитата:
Значит, имеется код, который выводит буквы и номера доступных USB дисков... Пользователь выбирает нужный драйв... а дальше, как мне ассоциировать номер диска с его буквой и задать это в переменные? Код:
@echo off |
Ясно... никто не может помочь...
Решил проблему так: Код:
rem выбираем USB |
Извините, а можно объяснить поподробнее, что это за переменные и в каких случаях используются :
%USBDrv% и %DRVnum% ? Спасибо ! |
Цитата:
DRVnum - сокращение от "drive number", это переменная хранит номер физического диска, который выбирает пользователь (смотрите код в шапке, остальное не актуально). Командный файл выдает список физических дисков в системе и просит выбрать номер вашего USB устройства (возможно в системе несколько таких), когда пользователь вводит номер - он присваивается переменной DRVnum, которая и используется в последующих командах... Затем по номеру выбираем нужный диск, проверяем, действительно ли у него интерфейс USB и находим букву, которую задаем в переменную Part_letter. Теперь, зная номер диска и букву тома, можно спокойно выполнять операции с флешкой... USBDrv - такая же переменная, использовалась в промежуточном коде, в процессе решения некоторых нюансов, в конечном коде - ее нет... |
Спасибо за ответ!
Цитата:
И ещё (не совсем в тему, но приблизительно) - как быть в таком случае: Вот , здесь например, всё понятно: Код:
FOR %%d 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 %%d:\WIN51 SET CDROM=%%d: |
Ну, например так, с условием, что в системе 1 USB диск:
Код:
setlocal EnableDelayedExpansion Цитата:
Вопрос, что конкретно надо сделать? Если нужно, чтоб определялся конкретный USB, подключенный к системе, самый простой способ, создать в корневой директории этой флешки текстовой файл с уникальным названием (допустим - myusb.txt), и тогда он найдется очень легко: Код:
FOR %%d 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 %%d:\myusb.txt SET USBdrv=%%d: |
ArmDeForcer, большое спасибо за подробное объяснение !
Буду пробовать. |
Цитата:
|
Время: 20:44. |
Время: 20:44.
© OSzone.net 2001-