conty9, давно хотел спросить: может pecmd своими средствами перемонтировать флешку с одной буквы на другую? Сейчас использую mounvol...
51179Он же наверное инфу из diskpart получает.
Не, дискпарт там не используется. Да и нелогично это - на просьбу дать шустрый способ получения инфы о накопителях отвечать скриптом с использованием этой весьма долго запускающейся программы.
dialmak, да, можно получить инфу без присвоенной буковки диска, по номеру накопителя. DiskPart не используется. Вообще, PART - очень мощная (в неумелых руках - и опасная) команда. Она позволяет: получать инфу о диске или разделе, инициализировать накопитель (как MBR или GPT), создавать/удалять/изменять/скрывать/показывать разделы (основные и расширенные), активировать/деактивировать их, устанавливать загрузочную запись в MBR/PBR и сохранять её в файл, обновлять для ОС инфу о диске/разделе, и многое другое.
Описание PART - мой перевод, не совсем корректный (я ещё не со всеми функциями разобрался)
PART [-gui] [-usb] [-up] [-admin] [-super] [-align[=..]] [-alignend[=..]] [-clear] [-raw] [-swap:id] [-CHS=C:H:S] [del/init] [-img=FileName|Disk]#Part [a|-a] type [[-]start [len]] PART -gpt [-up] [-admin] [-super] [-align[=..]] [-alignend[=..]] [-clear] [-raw] [-cmp] [del/init] [Disk]#[+]Part -|typeguid -|start -|len|@FinalSectorAddr guid -|Attr -|Name PART update [Disk] PART [-ahup] hupdate [Disk] `очистить диск PART [-devid] list disk [Disk],VarName `вернет в VarName значение DEVID PART [-devidx] list disk [Disk],VarName `вернет в VarName значение physical ID PART [-hextp] [-phy] [-phy#] [-fill] list part [Disk[#Part]],VarName PART [-hextp] [-fill] [-raw] list drv DrvLetter,VarName PART /mbr[=nt6|=win|=nt5|=dos|=[*LenLimit*]FileName] [-img=FileName|Disk] PART [-phy] /pbr[=nt6[fat]|=win[fat]|=nt5[fat]|=dos|=[*LenLimit*]FileName] [-img=FileName|Disk]#Part //fat относится к файловым системам FAT/FAT32/ExFAT -------------------------------------------- В безопасном режиме (по умолчанию) команда работает только с основными незаблокированными разделами 3 или 4, исключая расширенные разделы. -gui графический режим; -usb для отображения только USB-дисков -report[:RetVarName] для отображения списка, другие параметры игнорируются. -admin расширенный режим (опасный), можно работать с разделами 1 и 2; -super супер режим (довольно опасный), можно работать с расширенным разделом; -align выровнять от начала, а затем =64K, =128K, =512K, =1M и т. д . -alignend выровнять от конца =64K, =128K, =512K, =1M и т. д . -clear принудительно очистить имеющуюся информацию в разделе -raw не корректировать начало/размер, или назад (Dev# Part# Type Bus). -up обновить для ОС таблицу разделов диска (после изменений) -hup для очистки съемного диска -ahup для очистки диска -iv=n для извлечения элемента n#. C:H:S отображение HeadsPerCylinder:SectorsPerHead:SectorSize Disk от hd0 до hdN, по-умолчанию hd0, ведущий символ hd может отсутствовать для этого типа (т.е., можно указывать 0...N). Part 1-4, физический идентификатор 4 основных разделов в таблице разделов. Отличается от логического идентификатора, используемого для монтирования. Если таблица разделов является нулевой или это расширенный раздел, для ID не будет идентификатора +L для добавления логического раздела в конец расширенного раздела -L для удаления последнего логического раздела расширенного раздела Если идентификатор раздела является физическим идентификатором для логического раздела (>=5), то практически возможно для изменения его активации, типа, начала и длины. [a|-a] индикация активации -a удалить активацию раздела, в противном случае она останется неизменной type тип раздела,0-255. 0 - полностью скрытый раздел, неопределяемый средствами разделов и ОС. Если раздел назначен новым типом, этот раздел можно сразу же использовать Если значение <0 или отсутствует, он тип раздела не изменяется. Диск, часть, тип, начало и длина могут быть в шестнадцатеричном формате. start начальная позиция на диске. Начальный байт диска равен 0. Емкость диска кратна 512 байтам (автоматически сжимается и выравнивается внутри). Это может быть 0. Если <0 или отсутствует, оно остается неизменным. "-" указывает на конец последнего раздела с использованием «списка», и любая корректировка выравнивания конца не будет влиять на «len» (размер раздела). Для логического раздела может быть добавлен суффикс +, указывающий пропуск определенного размера. len размер, может равняться 0. Если <0 или отсутствует, остается неизменным. Для Start/len можно использовать множители TGMKS (terabyte, gigabyte, megabyte, kilobyte, sectors: K=1024 байт, S=512 байт). del чтобы удалить раздел полностью. Команда для удаления: PART del [Disk]#Part или PART [Disk]#Part -a 0 0 0 init для инициализации раздела GPT/MBR ---------------------------------------------- update [Disk] для обновления таблицы разделов в ОС. По-умолчанию Disk 0 [-ahup] [-up] hupdate [Disk] для принудительной очистки таблицы разделов выбранного диска. По-умолчанию Disk 0 ---------------------------------------------- list disk для перечисления всех разделов, если диск не указан. Если указан, вернет такую информацию о диске: DiskID, Size, CylinNum, HeadNum, SetorNum, SectorSize, MediaType, Sign(Hex), BusType, PartType, RemvFixDisk. list part:[Disk] hd0 по-умолчанию, если раздел не указан, отобразит все разделы ("-" нет, "@" расширенный раздел). Если присутствует, вернет такую информацию указанного раздела, как: PartID, Type, BootMark, BaseOffset, Size, HideSectorNum, End, DrvLetter. -hextp в шестнадцатиричном счете 0xNN. -phy разделы в физическом ID: 4 основных раздела 1-4 и логические разделы 5-N -phy # для экспорта физического идентификатора. -fill Существует заполнитель *, если нет буквы диска. Информация о разделе GPT возвращается следующим образом: PartID, TypeGUID, GPT, BaseOffset, Size, Attr, PartGUID list drv Буква диска в результате этой команды в основном такая же, как и из «части списка», но идентификатор диска добавляется в конце его результата. VarName для возврата результата запроса ----------------------GPT--------------------- "MS Basic Data" раздел ОС по умолчанию,Attr:0.+ перед «Part» указывает режим вставки,the original partition is moved backwards once. Physical ID:1~128. -cmp для сжатия нулевого элемента в таблице разделов (в противном случае он не был распознан DG, но его использование не влияет). Attr: 0x1000000000000000 только для чтения 0x2000000000000000 теневой 0x4000000000000000 скрытый 0x8000000000000000 буква диска не присвоена 0x0000000000000001 диспенсивный раздел на ПК ---------------------------------------------- /mbr перезаписать MBR, по-умолчанию nt6(win). Можно указать имя файла (файл не может быть слишком больше 63 сектора). Если имя файла начинается с #, это указывает номер ресурса в EXEDATA. LenLimit указывает на максимально необходимую длину для чтения от начала файла. Вторая * может отсутствовать, если нет путаницы, например, если существует #. ----------------------------------------------? /pbr перезаписать PBR, по-умолчанию nt6(win). Можно указать имя файла (файл не может быть слишком больше 63 сектора). Если имя файла начинается с #, это указывает номер ресурса в EXEDATA. LenLimit указывает на максимально необходимую длину для чтения от начала файла. Вторая * может отсутствовать, если нет путаницы, например, если существует #. -------------------------------------------- PART 1 для фиксации допустимой метки для таблицы разделов на диске 1. PART 1#3 a активировать третий раздел диска 1 (1#3) PART 1#3 -a дезактивировать третий раздел диска 1 (1#3) PART 1#3 0x17 1048576000 2097152000 //создать скрытый NTFS-раздел 1#3, размером 200M, начиная от 100M partition PART 1#3 0x17 //скрыть раздел 1#3 PART 1#3 0x7 //показать раздел 1#3 PART 1#3 -a 0 //полностью скрыть раздел, этот раздел не распознается менеджерами разделов и ОС. PART 1#3 -1 -1 1048576000 //для настройки на 100M, на самом деле необходимо сначала уменьшить размер файловой системы и увеличить ее впоследствии. 2)сократите размер раздела с помощью Part. 2.Для увеличения от 50M до 100M: 1) увеличьте размер раздела с помощью Part; 2)затем увеличьте размер файловой системы.) PART 1#3 -a 0 0 0 //для удаления раздела без влияния на его данные, а также переназначения и монтаж возможен. PART del 1#3 //удалить раздел, не влияя на его данные, а также переназначить и монтаж возможен. PART /MBR=*63s#5 0 //для записи ресурса №5 из EXEDATA в MBR диска 0, не более 63 сектора. PART /MBR=*63s*%CurDir%\MBROS.MBR 1 //для записи файла %CurDir%\MBROS.MBR в MBR диска 1, не более 63 сектора. PART 1#5 a 0x7 //для отображения и активации логического раздела 1#5. PART -super -force -clear -up -hup 1#2 -a 5 2.5G 3.5G //для создания расширенных разделов, -clear полная очистка PART -super -force -up -mbr 1#2 -a 0x07 1G 5G PART -up -align -alignend 1#+L 0x7 +32256 57544704 //для создания логического раздела в конце расширенного раздела PART -up 1#-L //для удаления последнего логического раздела PART -up -super -gpt -cmp 1#+1 {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7} 1G 5G {BC65AB2C-B5AF-4197-92B2-00E808FDEE09} 0x9000000000000000 "Basic data partition" PART -up -super -gpt -cmp del 1#2 //для удаления раздела GPT без данных и переназначение и монтаж являются практически осуществимыми. PART -up -super -gpt -cmp 1 //только для сжатия таблицы разделов GPT, что делает идентификатор раздела последовательно начиная с 1. PART -up -super -swap:1 1#4 //1#4 обменять с 1#1 PART -up -hup -super -force -mbr init 1 //инициализация MBR; -gpt инициализация GPT -------------------------------------------- Работа диска на системном уровне очень опасна, поэтому будьте осторожны!
Gemostarter, очень просто. Для этого можно использовать команды DISK или SHOW.
Примеры использования комманды DISK
DISK ,4,1 `Удалить букву накопителя 4#1 DISK U:,5,1, `Подключить букву U: для накопителя 5#1 (если раздел не скрытый) DISK U:,5,2,1 `Подключить букву U: для накопителя 5#2 (даже если раздел скрытый) DISK Letter,3,1 `Получить в переменную %Letter% букву накопителя 3#1 DISK ,,,1,U `Переназначить буквы дисков в порядке: разделы hdd0, hdd... hddX, CD/DVD, USB-HDD/UDF (USB-устройства, начиная с буквы U - определяется UDiskVol) DISK ,,,2,U `Переназначить буквы дисков в порядке: первые разделы hdd0...hddX, остальные разделы hdd0...hddX, CD/DVD, USB-HDD/UDF DISK ,,,3,U `Переназначить буквы дисков только для флешек (начиная с U)
Описание команды SHOW (мой приблизительный перевод)
SHOW [=1] [*&-] [DiskPart],[DrvLetter],[TimeWait],[StartDrvLetter] Служит для отображения removable-дисков, скрытых или несмонтированных разделов жестких дисков, существующих в системе, позволяет присваивать им буквы. &: локальный режим, который вряд ли будет замечен другими процессами. * При монтировании * указывает на длительность и при размонтировании * указывает размонтировать все. В противном случае это относится к последнему. - указывает на размонтирование =1 не монтировать, если уже смонтировано. DiskPart может принимать значение HDNo или ID:PartNo или ID#PartNo (где No - номер) Используется либо HDNo, либо ID. Если HDNo и номер<0, указывает на все жесткие диски, флешки и USB-HDD; 0 относится к HD0, 1 - HD1, 2 - HD2 и т.д.; ID: может указываться как «F» (фиксированные HDD) или «U» (USB-Hdd и USB-Flash) PartNo(логический): число, <"0" обозначает все разделы без присвоенных букв диска, "0": все видимые разделы без букв диска, «1»: первый раздел, «2»: второй, «3»: третий. Если цифра идет после #, тогда относится к физическому номеру раздела (1-4 - основные разделы и 5-N - логические разделы) DrvLetter: буква диска «A ~ Z», если отсутствует или не установлена, будет присвоена автоматически. Разрешены китайские иероглифы, которые помогают уладить невосприимчивость букв дисков и сохранять секретность (не могут быть перечислены). Они могут монтироваться или размонтироваться по мере необходимости. TimeWait:number число, указывающее на время ожидания (в мс) готовности для устройств, перед присвоением букв дисков. SHOW 0:1,H (или SHOW 0#1,H) `присвоить HD0 Part 1 букву диска H: SHOW U:1,U `присвоить первому разделу съемного HDD букву диска U: SHOW F:0 `присвоить буквы всем видимым разделам на Fixed HDD (буквы будут выбраны автоматически) SHOW U:0,,3000 `присвоить буквы всем removable-накопителям, ожидать 3000мс SHOW U:-1 `присвоить буквы всем removable-накопителям, подключать скрытые разделы SHOW 0:-1 `присвоить буквы скрытым разделам HD0 ???? SHOW ,G: `удалить букву G: SHOW 0:1 (или SHOW 0#1) `присвоить HD0 Part 1 букву автоматически SHOW - 0:1 (или SHOW - 0#1) `размонтировать HD0 Part 1 Скрытые разделы по-умолчанию, не монтируются автоматически. Если нужно их монтировать, установите «PartNo» как «-1»; Используйте SHOW или SUBJ для удаления буквы диска чтобы загрузить выходы в скрытом разделе и сохранить атрибут скрытия в том же самом.
И до кучи - как получить список занятых или свободных буковок
FDRV *ab *rsort DrvAll=* `Получить в переменную DrvAll список всех доступных в системе буковок дисков (начиная с конца /*rsort/ и игнорируя A и B /*ab/) FDRV *idlec FreeLett=*: `Получить в переменную FreeLett список всех незанятых буквок дисков (начиная с начала и игнорируя A и B)
Для ознакомления прикрепил скрипт из "дистрибутива" PECMD с менеджером разделов (там не всё работает, но скрипт позволяет сразу же оценить результаты своих действий).
Последний раз редактировалось: Гость (2018-02-22 16:53), всего редактировалось 1 раз
51183SHOW U:-1 `присвоить буквы всем removable-накопителям, подключать скрытые разделы
Привет сэнсэй!!! Огромное спасибо тебе за примеры использования команд (с комментариями) Так что же получается командой SHOW U:-1 можно подключить все разделы на многораздельной флешке без использования, например, bootpart или imdisk ?
sergeysvirid, нет, не выйдет. Проблема в том, что винда (до 10-ки) просто не даст присвоить букву второму разделу флешки. bootpart или imdisk используют свой драйвер для монтирования.
51189винда (до 10-ки) просто не даст присвоить букву второму разделу флешки. bootpart или imdisk используют свой драйвер
Ясно. Ну так это я вкурсе. Я просто подумал было, что PECMD своими средствами оказывалось всегда умел это делать (без использования bootpart или imdisk). Неверно истолковал для себя фразу: "SHOW U:-1 `присвоить буквы всем removable-накопителям, подключать скрытые разделы"
sergeysvirid, скрытый раздел - это раздел, которому присвоен Type 0x17 (вместо 0x07), для того чтобы ОС его скрывала. А вот второй раздел на флешке - это обычный раздел, с обычным Type. Но ОС просто его не позволяет смонтировать. К слову, MBROS (которая базируется на PECMD) использует манипуляции с Type. Он указывается таким, каким его "признают" загрузчики и "не признаёт" ОС (да и стандартные менеджеры дисков просто не видят этот раздел).
, стандартные менеджеры дисков просто не видят этот раздел
Что ж это за менеджеры такие? Для того они и менеджеры, что бы увидеть ID раздела, и если менеджер умеет, то и сменить его ID (как правило умеет большинство). А если даже такое не умеет, то это не менеджер, а ... Есть вариант, когда и никакой менеджер его не увидит, но это специальные MBR, их редко юзают. Впрочем у меня именно такой случай
dialmak, не видят, лично проверял. Просто показывают пустое место. ID не помню. Впервые это применяли, по-моему, в FBINST - в такой "спрятанный" раздел заливали меню и Grub4Dos. А в MBROS пошли дальше, из такого раздела монтируют WIM или ISO (команда MOUN). Вроде как-то так, я детально не вникал.
conty9, возможно это diskmgmt.msc. Так эт не совсем менеджер. А вот diskpart, tesdisk, dmde и т.д. всё видят. Последний скрин в этом посте описывает некоторые интересные ID.
dialmak, я проверял Paragon HDM, Acronis DDM, ещё несколькими менеджерами (у меня в 2k10 их хватает). Ни один не видел, кроме китайского PartitionGuru.
А, так там спец MBR.. Грубо говоря нестандартная таблица разделов. Как и в BootIt. В таких вещах, если отойти от стандарта - никто и не увидит. А принцип там прост и тривиален, можно и самому забацать.
Согласен. Китайцы не боятся использовать нестандарт. Иногда из этого получается что-то интересное. Например, наитив-режим WinPE, да и PECMD - это очень сильно продвинутый CMD, который напрямую использует системные библиотеки и позволяет обойтись без дополнительных утилит.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы