|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Узнать, MBR или GPT? |
|
CMD/BAT - [решено] Узнать, MBR или GPT?
|
Старожил Сообщения: 148 |
Профиль | Сайт | Отправить PM | Цитировать Нужно получить данные, какой формат имеет диск С, MBR или GPT и исходя из этой инфы задать флаговую переменную как 0 или 1.
|
|
Отправлено: 19:10, 24-04-2013 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Ксеноинженер, вы пробовали проверять свою конструкцию в деле? У меня совмещение двух строк без промежуточного помещения результатов в файл disks.txt:
ECHO LIST DISK | DISKPART | FINDSTR /r /c:"\*$" > disks.txt FOR /f "tokens=2" %%i IN (disks.txt) DO ECHO select disk %%i >> diskpart.txt && ECHO detail disk >> diskpart.txt for /f "tokens=2" %%I IN ('Echo List Disk ^| Diskpart ^| Findstr /e "Boot Загрузоч"') do echo Select Disk ^%%I > diskpart.txt && echo uniqueid disk >> diskpart.txt Поиск "{" через команду uniqueid disk действительно может помочь в определении GPT-раздела. Только тут надо каждый раздел подключать и проверять поочередно, а я с помощью команды List Disk нахожу их все одним махом. Да и ничуть uniqueid disk не поможет в определении, есть ли среди GPT-дисков загрузочный, для чего я и использую detail disk. Если честно, в вашем скрипте столько ошибок и логических нестыковок, что он в таком виде не заработает совершенно точно. Это я могу сказать даже без тестирования. |
Последний раз редактировалось m0nkrus, 27-04-2013 в 00:11. Отправлено: 23:47, 26-04-2013 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 92
|
Профиль | Отправить PM | Цитировать m0nkrus, Вы были корректны. Моё недоразумение в данном случае.
Возвращаюсь к Вашему, правильному, скрипту. Обойтись одним внешним файлом всё же можно (проверил, работает на GPT и MBR) каретки "^" обеспечивают целостность строки echo, не разрывая цикл символами "|". CD /d %~dp0 for /f "tokens=2" %%I IN ('echo List Disk ^| Diskpart ^| Findstr /r /c:"\*$"') do echo Select Disk %%I >> diskpart.txt && echo detail disk >> diskpart.txt Diskpart /s diskpart.txt | findstr /e "Boot Загрузоч" IF ERRORLEVEL 1 ( ECHO Загрузочный том размещен на MBR-разделе ) ELSE ( ECHO Загрузочный том размещен на GPT-разделе ) ) del /q diskpart.txt pause Цитата:
Цитата:
Цитата:
Одно пока мне неясно, как скрыть сообщение о найденном GPT диске. @echo off почему-то не сработал? |
|||
Отправлено: 03:14, 27-04-2013 | #22 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Нагляднее (не проверялось):
for /f "tokens=2" %%I IN ('echo List Disk ^| Diskpart ^| Findstr /r /c:"\*$"') do ( > diskpart.txt (echo Select Disk %%I echo detail disk) ) т.е. (также не проверялось) наподобие: |
Отправлено: 08:33, 27-04-2013 | #23 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Ксеноинженер:
Цитата Ксеноинженер:
Iska Спасибо, посмотрю ваши наработки. Потестирую. Оптимально, конечно, совсем отказаться от внешних файлов. |
||
Отправлено: 10:18, 27-04-2013 | #24 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska, первая конструкция рабочая, за исключением маленького нюанса. Она у вас тоже предусматривает наличие только одного GPT раздела. Надо так:
for /f "tokens=2" %%I IN ('echo List Disk ^| Diskpart ^| Findstr /r /c:"\*$"') do ( >> diskpart.txt (echo Select Disk %%I echo detail disk) ) Третий код снова не учитывает наличия нескольких GPT-разделов. Если их два и система размещена на первом, то на выходе скрипта мы получим, что система у нас, якобы на MBR. |
Отправлено: 10:33, 27-04-2013 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата m0nkrus:
Цитата m0nkrus:
Ежели сделаете на «отлопаченном» проверенный рабочий вариант — поместите его в тему. |
||
Отправлено: 10:44, 27-04-2013 | #26 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
|
||
Последний раз редактировалось m0nkrus, 27-04-2013 в 12:11. Отправлено: 11:18, 27-04-2013 | #27 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska, хотя можно тоже кое-что и из ваших наработок позаимствовать, немного оптимизировав:
@ECHO OFF CD /d %~dp0 FOR /f "tokens=2" %%i IN ('ECHO LIST DISK ^| DISKPART ^| FINDSTR /r /c:"\*$"') DO (>> diskpart.txt (ECHO select disk %%i && ECHO detail disk)) DISKPART /s "diskpart.txt" | FINDSTR /e "Boot Загрузоч" > nul IF ERRORLEVEL 1 ( ECHO Загрузочный том размещен на MBR-разделе ) ELSE ( ECHO Загрузочный том размещен на GPT-разделе ) PAUSE ... на эту: ...оптимизацией. Если бы команд на каждом витке цикла было больше, то да, это бы подсократило код, но всего с двумя элементами особой разницы нет. |
Последний раз редактировалось m0nkrus, 27-04-2013 в 12:09. Отправлено: 12:03, 27-04-2013 | #28 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата m0nkrus:
|
|
Последний раз редактировалось Iska, 27-04-2013 в 14:13. Причина: Добавил иллюстрацию Отправлено: 13:46, 27-04-2013 | #29 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska, согласен. Но, как я уже говорил, это становится сколько-нибудь критичным при много большем количестве вносимых строк.
|
Отправлено: 14:06, 27-04-2013 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
HDD - Как разбить HDD диск: MBR или GPT ? | jolo | Накопители (SSD, HDD, USB Flash) | 22 | 09-12-2014 04:46 | |
Разное - GPT в MBR без потери данных | V1P3RS | Microsoft Windows 7 | 13 | 02-04-2014 03:09 | |
Разное - GPT в MBR и нерабочий WiFi | pavel.trice@vk | Microsoft Windows 7 | 1 | 20-01-2013 13:33 | |
Установка - [решено] Установка Windows 7 на SSD с MBR-разметкой (требует GPT) | AtlASS | Microsoft Windows 7 | 14 | 14-11-2012 06:31 | |
HDD - [решено] Восcтановить MBR и/или информацию.. | Dick | Накопители (SSD, HDD, USB Flash) | 17 | 27-07-2012 18:33 |
|