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

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

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

Аватара для m0nkrus

Старожил


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

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


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

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

 

Аватара для zion87

Старожил


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

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


Код: Выделить весь код
@Echo Off
Set Sys=MBR
@Echo  List Disk|Diskpart|Find /I  "Gpt" && Set Sys=GPT

Последний раз редактировалось zion87, 24-04-2013 в 20:42.


Отправлено: 20:36, 24-04-2013 | #2



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

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


Аватара для m0nkrus

Старожил


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

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


zion87, ну вы бы хоть посмотрели, как команда List Disk в Diskpart отображает наличие GPT... Там столбец GPT, он всегда есть. Соответственно результат работы вашего скрипта будет всегда одинаков. А если раздел GPT, то это обозначается наличием звездочки в соответствующем столбце.

Вот так это выглядит:


Но бывает и такой вариант, так что ориентироваться ТОЛЬКО НА НАЛИЧИЕ ЗВЕЗДОЧКИ нельзя:

Последний раз редактировалось m0nkrus, 27-04-2013 в 23:05. Причина: Добавил скриншоты


Отправлено: 23:45, 24-04-2013 | #3


Ветеран


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

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


m0nkrus, используйте такой подход:
Detect GPT and MBR partitions with Powershell - Stack Overflow
GPT oder MBR: Partitionierungsschema auslesen mit diskpart, wmic, PowerShell | WindowsPro

P.S. У меня нет GPT под рукой, проверять и отлаживать пакетный файл не на чем.

Отправлено: 02:42, 25-04-2013 | #4


Аватара для m0nkrus

Старожил


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

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


Цитата Iska:
У меня нет GPT под рукой, проверять и отлаживать пакетный файл не на чем. »
Дык та же фигня... Приходится тестировщиков подключать, у кого оно есть.

За ссылки спасибо - гляну.

Отправлено: 02:59, 25-04-2013 | #5


Ветеран


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

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


Посмотрите. Если делаете на сторону — может проще будет использовать как раз WSH, або PoSH.

Отправлено: 04:58, 25-04-2013 | #6


Аватара для m0nkrus

Старожил


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

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


Iska, мне нужно эту выборку задействовать в SetupComplete.cmd автоустановки семерки. Так что CMD и только CMD.

P.S. Боюсь для решения моей проблемы по приведенным выше ссылкам инфы не наблюдается...

Последний раз редактировалось m0nkrus, 25-04-2013 в 08:36.


Отправлено: 07:46, 25-04-2013 | #7


Аватара для m0nkrus

Старожил


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

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


Прикинул, покумекал... По логике, так как при выводе через DISKPART столбец GPT последний, а под элементы, даже если они отсутствуют, место резервируется, то таким образом видоизмененный вариант скрипта zion87 должен работать:
Код: Выделить весь код
@Echo Off
Set Sys=MBR
@Echo List Disk | Diskpart | Findstr /R /C:"\*$" && Set Sys=GPT
Но этот скрипт показывает лишь наличие или отсутствие в системе GPT-дисков. А мне бы хотелось узнать не является ли системный диск (диск С) GPT-диском. Ведь может быть и такое:

Последний раз редактировалось m0nkrus, 25-04-2013 в 17:35.


Отправлено: 09:42, 25-04-2013 | #8


Ветеран


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

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


На WSH:
Код: Выделить весь код
Option Explicit

Dim strComputer
Dim objSWbemObjectEx
Dim strSystemDrive


strComputer = "."

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(strComputer, "root\cimv2")
	For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_OperatingSystem")
		strSystemDrive = objSWbemObjectEx.SystemDrive
		
		Exit For
	Next
	
	For Each objSWbemObjectEx In .ExecQuery("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='" & .Get("Win32_LogicalDisk.DeviceID='" & strSystemDrive & "'").DeviceID & "'} WHERE ResultClass = Win32_DiskPartition")
		WScript.Echo "System drive:", strSystemDrive
		WScript.Echo "Partition:   ", objSWbemObjectEx.DeviceID
		WScript.Echo "Type:        ", objSWbemObjectEx.Type
		
		If UCase(Left(objSWbemObjectEx.Type, 3)) = "GPT" Then
			WScript.Echo "GPT"
		Else
			WScript.Echo "Not GPT"
		End If
	Next
End With

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

Отправлено: 11:22, 25-04-2013 | #9


Аватара для m0nkrus

Старожил


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

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


Iska, ну я же сказал, что на WSH мне не пойдет...

Отправлено: 11:25, 25-04-2013 | #10



Компьютерный форум 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




 
Переход