|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получить список дисков\разделов |
|
CMD/BAT - [решено] Получить список дисков\разделов
|
Новый участник Сообщения: 14 |
Все доброго дня! Будьте добры, помогите советом... Создаю массивный сценарий для восстановления файлов загрузчиков разных версий Windows , всё в принципе работает, всё прекрасно - кроме одного момента в самом начале сценария. Никак не могу автоматизировать следующий процесс : необходимо получить список физических дисков, затем разделов на выбранном диске, затем буквы выбранного раздела - и выполнить копирование нескольких файлов в корень выбранного раздела. И всё это в пошаговое меню, аналогично diskpart - только без ввода команд, а с выбором вариантов. Реально, как считаете ?
|
|
Отправлено: 06:39, 18-12-2015 |
Забанен Сообщения: 793
|
Не совсем ясно, что мешает использовать тот же diskpart, ведь вышеобозначенные операции все равно по сути требуют наличия прав администратора? Так, например, чтобы получить список дисков:
Или размелов: Полученные данные прогнать через for и все. Есть и альтернативные решения, по крайней мере относительно активного жесткого диска и его разделов. typeperf @echo off setlocal&chcp 1251>nul for /f "tokens=2 delims=)(" %%i in ( 'typeperf -qx "\Физический диск" ^| findstr /rc:"\:"' ) do set "active=%%i" for %%i in (%active%) do ( (echo:%%i|>nul findstr [0-9])&&( echo:Disk %%i )||( echo:Volume %%i ) ) endlocal&chcp 866>nul exit /b Получить разделы активного жесткого диска можно через реестр. @echo off setlocal enabledelayedexpansion set "key=HKLM\SYSTEM\MountedDevices" for /f "tokens=1,3" %%i in ( 'reg query %key% ^| findstr /rc:"\?"' ) do ( for /f "tokens=1,3" %%k in ( 'reg query %key% ^| 2^>nul findstr %%j ^| findstr /rc:"\:"' ) do ( if "%%j" equ "%%l" set "drv=%%k" set "drv=!drv:\DosDevices\=!" echo !drv! %%i ) ) endlocal exit /b Получить разделы активного жесткого диска также можно через гибридную технику - CMD\JS. Есть и другие варианты и способы решения задачи, но перечислять их все довольно утомительно. |
Отправлено: 09:55, 18-12-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 14
|
Профиль | Сайт | Отправить PM | Цитировать спасибо большое ! очень помогло, схоронил.
а что касательно прикручивания меню и создание переменной не подскажете? допустим командой echo list disk | diskpart | findstr /vrc:"\." | findstr [0-9] - я получил список дисков. Теперь нужно основываясь на полученных данных создать меню, где кол-во пунктов = кол-ву найденных дисков. Затем от пользователя потребуется ввод номера диска, сбросить выбранный вариант в переменную, чтобы дальше работать с этим диском. Затем то же самое с выбором раздела именно на выбранном диске. То есть возможно ли в итоге получить три переменные, где 1 - имя выбранного диска, 2 - имя раздела, 3 - буква раздела (с которой скрипт и будет работать дальше), если буквы нет - смонтировать ? |
Отправлено: 14:14, 18-12-2015 | #3 |
Новый участник Сообщения: 14
|
Профиль | Сайт | Отправить PM | Цитировать "Не совсем ясно, что мешает использовать тот же diskpart" - если его можно поместить рядом со скриптом и он будет работать в любых PE средах, то конечно можно... но хотелось бы как то автоматизировать и упростить, где от пользователя потребуется только ввод номера, а не всей команды к diskpart.
|
Отправлено: 14:48, 18-12-2015 | #4 |
Забанен Сообщения: 793
|
Сперва просите просто направить дао в нужное русло, теперь по сути просите реализовать за Вас некую систему, - резонно спросить: какова цена вопроса? Если расчитываете на "даром", то ждите ответа других.
|
|
Отправлено: 16:05, 18-12-2015 | #5 |
Новый участник Сообщения: 14
|
Профиль | Сайт | Отправить PM | Цитировать нет, реализация системы тут не при чем. А в принципе проблема решилась достаточно просто ... попросил знакомого написать простой автономный инсталлятор , позволяющий выбрать диск и раздел, в корень которого необходимо извлечь файлы. Наличие буквы как и среды , в которой он запускается - не играет никакой роли (уже импровизация, что лично по мне - очень удачно). Так что можно тему считать закрытой.
|
Отправлено: 16:37, 18-12-2015 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Получить список шрифтов | eus_deus | AutoIt | 3 | 31-10-2013 22:31 | |
[решено] Получить список каталогов в каталоге | olann | AutoIt | 2 | 03-12-2011 20:33 | |
получить список занятых ip в сети | dark_n | Сетевые технологии | 2 | 06-07-2007 09:17 | |
Удаленно получить список процессов | Dronec | Сетевые технологии | 1 | 25-09-2004 12:49 | |
Удаленно получить список процессов | Dronec | Защита компьютерных систем | 4 | 24-09-2004 14:41 |
|