[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
DiskPart Advanced Script Console Автор: GeStart Live a.k.a GemoStarter
Системные требования: Windows XP или новее
DiskPart ASC - Программа, предназначенная для упрощения использования скриптов для программы DiskPart, встроенного в Windows консольного менеджера разделов. Использование ASC устраняет необходимость всякий раз перед использованием скрипта сверяться со списком имеющихся дисков и изменять скрипт, подставляя в него номера нужных дисков и разделов.
После запуска ASC будет выведен список всех доступных для работы физических дисков. После выбора диска будет выведена более детальная информация о нём, а так же список имеющихся на нём разделов. После выбора раздела будет отображена более детальная информация о нём.
Выбрав диск и, если нужно, раздел, можно будет выбрать один из заранее подготовленных скриптов в выпадающем списке. После нажатия кнопки "Run Script" ASC автоматически подставит номера диска и раздела в нужные места скрипта, и передаст его присутствующему в системе diskpart.exe.
ОСТОРОЖНО: В архиве с программой присутствуют два скрипта. Они удаляют с диска имеющуюся таблицу разделов (командой CLEAN), создают новую таблицу GPT или MBR (зависит от скрипта) и структуру разделов для установки Windows. Скрипты приложены, в основном, для демонстрации функционала, но полностью работоспособны, и при случайном запуске не на том диске обрекут вас на долгое и мучительное восстановление информации.

О скриптах:

Автоматическая подстановка номеров диска и раздела в скрипт достигается за счёт использования в скрипте переменных:
#ANTI# - Заглушка, предотвращающая случайный запуск скрипта без ASC, рекомендуется размещать первой строкой
#DISK# - Номер диска
#PART# - Номер раздела
#VOLU# - Номер тома, соответствующего #PART#
#PSTL# - Стиль разделов диска #DISK#
#GSEC# - Размер сектора #DISK# из информации о геометрии диска
#PSEC# - Размер физического сектора #DISK# (не все диски его сообщают)
#LSEC# - Размер логического сектора #DISK# (не все диски его сообщают)
#MNTP# - Точка монтирования раздела #PART# (без конечного "\")
#MNTPF№# - Свободная буква диска, это номер свободной буквы, если букв не хватит для всех номеров, скрипт не запустится
В скриптах поддерживаются простые вычисления. Выражение должно быть заключено в фигурные скобки,например:
{ 2 * 2 }
На место этого выражения будет подставлен его результат, то есть 4.
Вкладывать выражения друг в друга нельзя! Ошибки внутри выражений не проверяются, будьте внимательны.
Поддерживаются операторы:
^ - Возведение в степень
* - Умножение
/ - Деление
+ - Сложение
- - Вычитание
Не все йогурты одинаково полезны, и не все скрипты одинаково хорошо подходят для разных сценариев работы. К примеру, скрипт, написанный для MBR-дисков, будет непригоден для работы с GPT, и наоборот. Кроме того, некоторым скриптам достаточно выбрать только диск, другим же необходимо знать и раздел. Отсеять безусловно неподходящие скрипты поможет соблюдение шаблона именования:
DPMGRSEAU.AnyText
Собственно шаблоном здесь является DPMGRSEAU, то есть текст, располагающийся до первой точки. Всё, что находится после неё, игнорируется программой.
D - Для работы скрипту необходим номер диска
P - Необходим номер раздела
M - Поддерживается стиль разделов MBR
G - Поддерживается стиль разделов GPT
R - Поддерживаются RAW-диски (без таблицы разделов)
S - Поддерживаются диски со стандартным форматом сектора (512 байт как физически, так и логически)
E - Поддерживаются диски с форматом сектора 512e (4096 байт физически, 512 байт логически)
A - Поддерживаются диски с форматом сектора 4K (4096 байт как физически, так и логически)
U - Поддерживаются диски с неизвестным форматом сектора (любые другие комбинации, в том числе если диск не сообщает размер #PSEC# и #LSEC#)
Если скрипт может работать с любым стилем разделов и RAW, то можно не указывать стиль в шаблоне.
Если размер сектора не играет роли, в шаблоне нужно указать 0 либо не указывать чисел вовсе.
Если скрипт может работать без диска, раздела, вне зависимости от стиля разделов и размера сектора, шаблон можно оставить пустым. Можно и удалить шаблон вовсе, но во избежание неожиданного поведения лучше указать пустой. То есть .AnyText

Интерфейс:

1 - Список дисков
2 - Детальная информация о диске, выбранном в 1
3 - Список разделов на диске, выбранном в 1
4 - Детальная информация о разделе, выбранном в 3
5 - Список скриптов
6 - Запуск скрипта, выбранного в 5
7 - Запуск DiskPart без скрипта (для ручной работы)

Благодарности:

sergeysvirid, Adler, nikzzzz, vovan1982, Ander_73 и все, кого забыл упомянуть - за тестирование программы и ценные советы
Attachments

Версия 2.0



Last edited by Gemostarter on 2019-07-24 17:04; edited 8 times in total

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 4 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
NeleGal-38,
$text = new Process(["C:\\Windows\\SysWOW64\\cmd.exe", "/c C:\\Windows\\sysnative\\ping.exe ya.ru"])->start()->getInput()->readFully();
var_dump($text);

[Quote]

    NeleGal-38
  • 122
  • Longevity: 9 years 5 months
  • Posts: 506
  • REPUTATION:38

    [+] [-]
  • Location: Из леса вестимо
nikzzzz, Дошло до меня! )) Спасибо!

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
54025парсятся не зависимо от языка, пример - list disk
Это код для list partitions... С ним проблем и так не возникало, а вот об list disk и list volume с этими их пустыми полями все мозги сломал... Черт с ним, логику программы ломать сейчас не собираюсь, меня пока больше волнует корректность копирования exe и mui в сборках, где они отсутствуют, кроме 7 (не PE) нигде это не тестировал.

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
Как вам интерфейс?

Скриншот

[Quote]

    Ander_73
  • 15549
  • Longevity: 7 years 3 months
  • Posts: 3615
  • REPUTATION:127

    [+] [-]
Gemostarter, я целую минуту пытался понять, нафига два окна с дисками ag

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
Ander_73, Подумаю, как лучше обозначить, что зачем ah
Кстати, отдельный список томов (именно томов) нужен или нет? Преимуществ он, КМК, не даст - вся инфа уже есть в поле информации о разделе...

[Quote]

    Ander_73
  • 15549
  • Longevity: 7 years 3 months
  • Posts: 3615
  • REPUTATION:127

    [+] [-]
Gemostarter, тома вообще имеют смысл только в случае RAID. Иначе они совпадают с разделами.
---
На мой вкус, самое правильное - это список дисков и под каждым диском, при нажатии "на крестик", раскрывается дерево разделов (не могу сразу найти внятный скриншот; надеюсь, ты понял, о чём я).

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
Ander_73, Древовидную структуру можно сделать, но будет менее наглядно - аккуратной таблички она не подразумевает. Это затруднит идентификацию дисков и разделов "с первого взгляда", к тому же усложнив код вычленения из этой инфы номера диска/раздела. Оно нам надо?
А как сделать, чтобы и волки целы, и овцы сыты, я даже не знаю...

[Quote]

    Ander_73
  • 15549
  • Longevity: 7 years 3 months
  • Posts: 3615
  • REPUTATION:127

    [+] [-]
68112"с первого взгляда"
У тебя во второй таблице отображаются сразу ВСЕ разделы ВСЕХ дисков что-ли? Я думал, всё равно надо "встать" на диск, чтобы во второй таблице отобразились его разделы. И тогда гораздо нагляднее именно разворачивать дерево разделов выбранного диска. Тогда нужно только два окна (главное и свойства) и не будет путаницы, какого диска раздел сейчас текущий (в твоём же случае надо совместить информацию из ТРЁХ окон - диск, раздел, инфа)
Но это сугубое имхо.
---
УПД. Или, действительно, сразу в одной таблице выводить ВСЕ диски и под ними ВСЕ разделы. Старт будет затруднён, зато сразу всё наглядно. Гы.

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
Ander_73, Не, разделы только для выбранного диска выводятся, конечно ag
Но юзеру нет необходимости помнить номер диска в тот момент, как он будет выбирать раздел. Да и вообще никакой необходимости знать номера нет - обычно диски и разделы идентифицируют по размеру, для более сложных случаев предусмотрены поля расширенной информации (справа). И вполне можно, убедившись, что выбран Тот_Самый_Диск, запомнить только то что он Тот_Самый, и спокойно хлопать глазами, разбираясь в его разделах.
З.Ы. А выводить все разделы сразу мне даже проще - структура с данными о диске включает информацию обо всех его разделах. При построении списка дисков эта инфа просто игнорируется, а в момент выбора диска запрашивается заново.

[Quote]

    Ander_73
  • 15549
  • Longevity: 7 years 3 months
  • Posts: 3615
  • REPUTATION:127

    [+] [-]
68131А выводить все разделы сразу мне даже проще
Так может и обойтись двумя окнами?
В первом все диски и разделы, во втором - инфа о текущем объекте.
Типа:
Диск 0 1000 Тб GPT
    Раздел 0 100 Мб
    Раздел 1 200 Гб
    Раздел 2 799 Гб
Диск 1 2000 Тб GPT
    Раздел 0 500 Мб
    Раздел 1 1200 Гб

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
68134Так может и обойтись двумя окнами?
Кажется мне, что это будет неудобно. Менее удобно, чем сейчас, во всяком случае. *здесь была мудрая фраза о котлетах и мухах*

[Quote]

    Gemostarter
  • 15956
  • Longevity: 7 years 2 months
  • Posts: 323
  • REPUTATION:35

    [+] [-]
Вот такой вариант, похоже, будет окончательным.

Скриншот

Кстати, кому-нибудь известен надёжный способ определить, является раздел "основным" или "логическим"? Консольные проги и WMI не предлагать. Кроме того, метод д.б. совместим с WinXP и большинством WinPE.
Пока реализовал определение по косвенном признаку, не уверен, что будет работать везде...

[Quote]

    vovan1982
  • 214
  • Longevity: 9 years 4 months
  • Posts: 1103
  • REPUTATION:76

    [+] [-]
  • Location: Ростов-на-Дону
Gemostarter, может через хек редактор проверять наличие метки активности?

[Quote]

    SunOK
  • 9
  • Longevity: 9 years 6 months
  • Posts: 352
  • REPUTATION:32

    [+] [-]
  • Location: Україна, Перлина Поділля
aa
vovan1982, основной раздел может и не быть активным.
Gemostarter, посмотрите в спецификации стандарта, может и вправду регламентируется так, что можно HEX-значения считывать (менеджеры разделов как-то узнают об этом...).

Page 2 of 7


Display posts:    

Current time is: 25-May 11:54

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum