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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Узнать, MBR или GPT?

Ответить
Настройки темы
CMD/BAT - [решено] Узнать, MBR или GPT?

Аватара для m0nkrus

Старожил


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

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


Нужно получить данные, какой формат имеет диск С, MBR или GPT и исходя из этой инфы задать флаговую переменную как 0 или 1.

Отправлено: 19:10, 24-04-2013

 

Пользователь


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

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


m0nkrus, Iska, ITDemon, всё гениальное просто! Если не ошибаюсь, каждая копия Windows считает место хранения своего загрузочного тома не иначе как "диском 0", Вы проверьте Если загрузочный том всегда на диске 0, то:
Код: Выделить весь код
@echo off
CD /d %~dp0
echo Select Disk 0 >> diskpart.txt && echo detail disk >> diskpart.txt
Diskpart /s diskpart.txt | Findstr /c:"{"
IF ERRORLEVEL 1 (
	ECHO Загрузочный том размещен на MBR-диске
	) ELSE (
	ECHO Загрузочный том размещен на GPT-диске
	)
del /q diskpart.txt
pause
Ключ логики - имеет ли "диск 0" GUID вида {...} (GPT), или ИД Диска 0 имеет другой вид (MBR).
На MBR WinXP и GPT Win8 проверил - работает корректно, подозреваю на остальных версиях тоже

Отправлено: 02:13, 30-04-2013 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Ксеноинженер, сейчас проверить уже не могу: под рукой не осталось машин, где ОС была бы установлена не на первый накопитель. Тем более — с GPT .

Отправлено: 03:17, 30-04-2013 | #42


Аватара для m0nkrus

Старожил


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

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


Ксеноинженер, увы, тоже проверить не на чем. Я системный диск всегда втыкаю в первый SATA-порт, так что он у меня в любом случае нулевой.

Хоть я и не могу сказать, работает ли ваша конструкция, но оптимизировать код, избавившись от внешнего файла, думаю, смогу. Ваше:
Код: Выделить весь код
echo Select Disk 0 >> diskpart.txt && echo detail disk >> diskpart.txt
Diskpart /s diskpart.txt | Findstr /c:"{"
Замена:
Код: Выделить весь код
((echo select disk 0 && echo detail disk) ^| diskpart.exe) | findstr /c:"{"

Последний раз редактировалось m0nkrus, 06-05-2013 в 08:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:12, 03-05-2013 | #43


Пользователь


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

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


Добавил вывод ИД диска, для наглядности принятия решения скриптом.
Код: Выделить весь код
@echo off
CD /d %~dp0
((echo select disk 0 && echo detail disk) ^| diskpart.exe) | findstr /c:"ИД диска" & ((echo select disk 0 && echo detail disk) ^| diskpart.exe) | findstr /c:"{">nul
IF ERRORLEVEL 1 (
	ECHO Загрузочный том размещён на MBR-диске
	) ELSE (
	ECHO Загрузочный том размещён на GPT-диске
	)
pause
Взять к примеру "тяжёлый случай", когда загрузчик на одном диске, а Windows на другом. Ведь для работы скрипта это не важно: Логический диск "с букавкай С:" может быть на диске 0,1, 2, 3, 4... . Пусть будет!
Тем не менее, место хранения Загрузчика ОС есть Диск 0 всегда! В противном случае данная копия Windows "не загружабельна" без правки:
любого имеющегося на Диске 0 загрузчика или BIOS, если загрузчика, на Диске 0, нет.
Какой из SATA портов будет Диском 0 определяет первая строка в "Boot Sequence" в BIOS.
Чтива полно на "железных" конференциях forum.oszone.net, ixbt.com.

m0nkrus, оптимизация хороша, пригодится и для других задач тоже!

Отправлено: 19:08, 03-05-2013 | #44


Аватара для m0nkrus

Старожил


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

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


Ксеноинженер, вот честно, не могу с уверенностью сказать, что мне нужно найти, где находится системный диск (скрытая 100-метровка) или загрузочный диск (диск С). Для первого случая ваш вариант подходит, для второго - не факт. Тут нужно тестировать, тестировать и еще раз тестировать. А не на чем...

Идея такой комплектации команд изначально не моя, а Iska.

Отправлено: 19:45, 03-05-2013 | #45


Пользователь


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

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


Цитата m0nkrus:
Тут нужно тестировать, тестировать и еще раз тестировать. А не на чем... »
Что ж, VMWare или VirtualBox в помощь. В EFI режиме с загрузочным GPT диском обе работают, в отличие от Hyper-V.

Отправлено: 22:29, 05-05-2013 | #46


Аватара для m0nkrus

Старожил


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

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


Ксеноинженер, я пробовал запустить установку винды на VirtualBox в UEFI-режиме - хрен вам!..

Отправлено: 22:36, 05-05-2013 | #47


Пользователь


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

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


m0nkrus, действительно, не стоит с VirualBox связываться, ведь конкурент субъективно стабильнее. Моя тестовая платформа "GPT EFI Boot":
  1. Установил VMWare Player . Создал новую машину.
  2. Добавил в конфигурацию *.vmx машины строку блокнотом.
    Код: Выделить весь код
    firmware = "efi"
  3. Включил машину, загрузился с MSDN образа, установил Windows.
Для копирования скрипта на виртуальную машину может пригодиться Утилита монтирования *.vmdk образов

Последний раз редактировалось Ксеноинженер, 06-05-2013 в 00:59.


Отправлено: 00:25, 06-05-2013 | #48


Пользователь


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

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


Цитата:
Зачем вам сейчас вдруг понадобилось таким "оригинальным" способом самоутверждаться, мне совершенно непонятно.
Действительно, топик не место для этого. Прошу прощения за своё ребячество.

Однако,
m0nkrus, как можно, не тестируя, серьёзно говорить про работу скрипта в предложенных Вами экзотичных вариантах системы?
Краткая схема моих тестов:
  1. BIOS
    диск 0 MBR, "Системный раздел"
    диск N GPT, "Загрузочный раздел", Цель установки
  2. EFI
    диск 0 GPT, "Системный раздел"
    диск N MBR, "Загрузочный раздел", Цель установки
где N =1,2,3...

Результат: В обоих случаях после стандартной установки и диск 0 под "Системным разделом" и диск N под "Загрузочным разделом" имеют один и тот же формат. Подозреваю, установщик Windows конвертирует чистый Диск 0 в формат диска под загрузочным разделом, выбранным во время установки, А если Диск 0 занят, то ошибка установки.
Вывод: в "загружабельных" системах тип диска 0 и тип диска N под загрузочным разделом один и тот же, всегда.
Какие ещё вопросы по теме топика? На практике наш с вами скрипт исправно работает, пусть и по косвенному признаку: ID Диска 0.

Последний раз редактировалось Ксеноинженер, 06-05-2013 в 15:19.


Отправлено: 15:13, 06-05-2013 | #49


Аватара для m0nkrus

Старожил


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

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


Цитата Ксеноинженер:
Вывод: в "загружабельных" системах тип диска 0 и тип диска N под загрузочным разделом один и тот же, всегда. »
Поверьте моему богатому опыту - не всегда. Иначе я бы не зацикливался так на этом.

Отправлено: 01:30, 07-05-2013 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Узнать, MBR или GPT?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход