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

Показать сообщение отдельно

Ветеран


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

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


Павлины, Конкретные предложения, говоришь … Я бы начал с общих.

Код: Выделить весь код
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:
У меня в корне раздела установленной «Windows 7» лежит «bootmgr». Если DVD не был вставлен (или не опознан, ошибка чтения и пр.) — что будет с переменной окружения «CDROM»?

P.S. В предположении, что мы запускаем пакетный файл из-под «Windows 7», ибо ниже есть упоминание «choice.exe», которая в XP отсутствует.

Следом ещё одна:
Код: Выделить весь код
@echo off
Зачем вторично?!

Код: Выделить весь код
echo list disk>c:\script1.txt
echo exit>>c:\script1.txt
echo 5. Wait for list of existing disks...
diskpart /s c:\script1.txt
Ну, а если нет «c:»?! Почему создаём не в положенном месте, «%temp%»? Вообще, имя файла («c:\script1.txt») лучше задать один раз, затем использовать переменную.

И, если уж вывод «diskpart» предлагается для последующего выбора, то его (вывод) стоит фильтровать, отображая ровно то, что является значимым для задачи.

Код: Выделить весь код
choice /C 01234 /M "6. Choose your USB-drive number".
Предположение, что дисков может быть не более четырёх давно не соответствует истине. Во времена IDE на это ещё стоило полагаться, но нынче… Несерьёзно.

Код: Выделить весь код
set FLASH=0
if errorlevel=5 Goto 1

…Длинная портянка кода…

:4
set FLASH=1
Goto end

:end
Проще что-то наподобие:
Код: Выделить весь код
set /a FLASH=%ERRORLEVEL% - 1
Можно и без «%%», лишь бы расширенная обработка команд была включена.

Очередная, уже третья:
Код: Выделить весь код
@echo off
Код: Выделить весь код
echo clean>>c:\script2.txt
…
diskpart /s c:\script2.txt
А вот перед очисткой диска дополнительный запрос подтверждения необратимо деструктивных действий (с подсказкой) очень не помешал бы.

Сначала Вы пишете, что:
Цитата:
единственное - вначале батник просит создать текстовой файл с названием myusb.txt в корневой директории флешки, чтобы определить ее букву и не перепутать с другим диском...
а затем в скрипте «ручками» предлагаете указывать диск. Буквально на днях была тема по решению близкой задачи — найти взаимное соответствие Диск⇔Раздел⇔Логический диск. Переменные не очищаются, а команды «setlocal» нету, файл в корне диска C: создаётся и не удаляется. Зато «@echo off» целых три…

Такое впечатление, что Вы сложили в одну кучу несколько пакетных файлов, не слишком заботясь об их приведении к мало-мальски единому целому. Как-то так.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:05, 23-01-2011 | #2