SmokieBlahBlah
  - Стаж: 9 лет 6 месяцев
- Сообщений: 42
- Репутация:2[+] [-]
|
conty9, есть ли в PECMD аналог команды "bootice /DEVICE=E: /partitions /firstpart=1"? То есть "сделать второй раздел флешки доступным" Команда "PART -super -force -clear -up -hup 1#2 -a 5 2.5G 3.5G" не переразбивает флешку И можно в скрипте получения инфы о дисках добавить инфу о размере всех разделов, включая разделы без назначенных букв? Типа того: "1:213718237812,2:54545454"
|
|
SmokieBlahBlah, насколько я знаю, простой команды обмена разделов 1<>2 нет. Собственно, я сам интересовался у автора такой возможностью, пока он не ответил. Свой вариант скрипта для обмена я там привел, но он сыроват, нужно тестировать (под 10-кой глючит). Суть: прочитать инфу о первом и втором разделе и внести их наоборот в MBR. Инфу о размере разделов без буквы, в принципе, тоже можно добавить. Будет время - подправлю скрипт. Хотя, имхо, проще вначале подключить все разделы.
|
SmokieBlahBlah
  - Стаж: 9 лет 6 месяцев
- Сообщений: 42
- Репутация:2[+] [-]
|
conty9, спасибо заранее. а что насчет создания двух разделов на флешке? как это сделать при помощи PECMD? или чем еще можно кроме bootice?51235Хотя, имхо, проще вначале подключить все разделы. второй раздел флешки нельзя же подключить одновременно с первым. вот и хочется сразу знать, что есть второй раздел и какой он по размеру, чтобы высвечивать или затемнять доступные опции
|
|
По поводу создания двух разделов средствами PECMD - сам сейчас переписываю UTmake, чтобы этот процесс делался полностью средствами PECMD (хочу отказаться от RMPartUSB, который используется в актуальной версии для создания MBR и первого раздела, второй делал через PECMD). Я ведь сам пока изучаю PECMD.Но примерный скрипт для создания двух разделов естьPART -usb list disk,DrvAll FORX* %DrvAll%,XEnvi, {* TEAM DISK TEnvi,%XEnvi%,1|FIND $%TEnvi%=,PART -devid list disk %XEnvi%,TEnvi!EXIT - TEAM LPOS DEnvi=USBSTOR,1,%TEnvi%|IFEX $%DEnvi%=0,EXIT -!TEAM FDRV *idlec DEnvi=*:|MSTR DEnvi=<1>%DEnvi%|DISK %DEnvi%,%XEnvi%,1,|EXIT - } Envi DiskN=7 `Номер диска (hd7) ENVI DiskFS=FAT32 `Файловая система первого раздела ENVI DiskLN=First.1 `Метка первого раздела ENVI F2PtnD=%CurDir%\Utilites\Flash2Ptn.exe `Самораспаковка для установки на второй скрытый раздел TEAM ENVI UTFold=%Temp%\2k10\UTmake|PATH %UTFold% ENVI ScPart=10 `Размер второго раздела в мегабайтах ENVI Spart.Check=1 `Если 1, создавать второй раздел, если 0 - единственый раздел PART -phy list part %DiskN%#1,TEnvi TEAM MSTR TEnvi=<8>%TEnvi% MSTR SelDsk=1,2,%TEnvi% CALL @RePart EXIT _SUB RePart,W360H195,Repartition & format %SelDsk%\,,,,, LABE ,L20T12W160H22,SelDsk=%SelDsk%,,0x0000AA,14 ITEM UDFRPrt,L240T12W100H25,Repartition,TEAM CALL UForm|Envi @RepMess=DONE!|WAIT 2000|Envi @RepMess=|EXIT LABE RepMess,L20T70W320H22,Start,,0x0000AA,14 TEAM PART -devid list disk %DiskN%,TEnvi|MSTR TEnvi=<~12>%TEnvi%|SED TEnvi=1,USBSTOR\\DISK\&VEN_,,%TEnvi%|SED TEnvi=1,\&REV.*,,%TEnvi%|SED TEnvi=1,\&,_,%TEnvi%|LABE ,L10T32W220H22,%TEnvi%,,,12 _END _SUB UForm TEAM DISK TEnvi,%DiskN%,1|CALC EFIldr=0|FIND $%TEnvi%=,!ENVI SelDSK=%TEnvi% IFEX $%Spart.Check%=1,FIND $%ScPart%=EFI-loaders,TEAM CALC EFIldr=1|EXEC --hide --wait %F2PtnD% -nr -InstallPath="%UTFold%\2Ptn"|SIZE TEnvi=%UTFold%\2Ptn|CALC #ScPart=%TEnvi%/920000+2|FILE %UTFold%\2Ptn TEAM PART list disk %DiskN%,TEnvi|MSTR ,DiskFF=<1*>%TEnvi% TEAM CALC Size2P=%ScPart%M*%Spart.Check%|CALC #Start2P=(%DiskFF%-%Size2P%)/1M*1M FORX* 2 1,NEnvi,TEAM PART -phy list part %DiskN%#%NEnvi%,TEnvi|MSTR TEnvi=<8>%TEnvi%|MSTR DEnvi=3,2,%TEnvi%|MSTR TEnvi=1,2,%TEnvi%|FIND $%TEnvi%<>,TEAM SHOW ,%TEnvi%|FIND $%DEnvi%<>,SHOW ,%DEnvi% ENVI @RepMess=Clear first 1MB (zero padding) PUTF \\.\PhysicalDrive%DiskN%,0,*1M 0x00 0x00 IFEX $%Size2P%>0, {* ENVI @RepMess=Create MBR and second partition PART -mbr -up -super init %DiskN% SHOW - %DiskN%#1 PART -mbr -up -hup -force -super -usb -fs %DiskN%#1 0x0E %Start2P% %Size2P% TEAM WAIT 200|PART -phy list part %DiskN%#1,TEnvi|MSTR TEnvi=<8>%TEnvi%|MSTR DEnvi=3,2,%TEnvi%|MSTR TEnvi=1,2,%TEnvi%|FIND $%DEnvi%<>,SHOW ,%DEnvi% FIND $%TEnvi%<>,ENVI SelDsk=%TEnvi%!FIND $%SelDsk%=,TEAM FDRV *idlec TEnvi=*:|MSTR SelDsk=<1>%TEnvi%|SHOW %DiskN%#1,%SelDsk%!SHOW %DiskN%#1,%SelDsk% TEAM ENVI @RepMess=Format the second partition|IFEX $%Size2P%>2048M,EXEC --hide --wait --exe:#20 tmp %SelDsk%!DFMT %SelDsk%,FAT,,1 TEAM WAIT 200|FDRV *setvol %SelDsk%=Part_II|PART -hextp -phy list drv %SelDsk%,TEnvi|MSTR FS2P=<2>%TEnvi% FIND $%EFIldr%=1,TEAM ENVI @RepMess=Copy files from archive to second partition|EXEC --hide =%F2PtnD% -nr -InstallPath="%SelDsk%"|ENVI EFIldr= } TEAM ENVI @RepMess=Create the first partition|CALC #Size1P=%Start2P%-1048576|SHOW - %DiskN%#1 PART -mbr -up -hup -force -super -usb -fs %DiskN%#1 0x0E 1048576 %Size1P% TEAM WAIT 200|PART -phy list part %DiskN%#1,TEnvi|MSTR TEnvi=<8>%TEnvi%|MSTR DEnvi=3,2,%TEnvi%|MSTR TEnvi=1,2,%TEnvi% FIND $%TEnvi%=,SHOW %DiskN%#1,%SelDsk%!FIND $%DEnvi%<>,SHOW ,%DEnvi% TEAM ENVI @RepMess=Format the first partition TEAM SITE ?XEnvi=FVER,%WinDir%\System32\cmd.exe|LSTR XEnvi=1,%XEnvi% FIND $%OsVer%=5,ENVI NEnvi=EXEC --hide --wait --exe:#21 tmp %SelDsk% /Q /Y /X /FS:%DiskFS%!ENVI NEnvi=DFMT %SelDsk%,%DiskFS%,,1 FIND $%DiskFS%=FAT32,ENVI NEnvi=EXEC --hide --wait --exe:#20 tmp %SelDsk% IFEX $%Size1P%<2048M,ENVI NEnvi=DFMT %SelDsk%,FAT,,1 TEAM %NEnvi%|IFEX $%errorlevel%<>0,EXEC --hide --wait --exe:#20 tmp %SelDsk% TEAM PART -hextp -phy list drv %SelDsk%,TEnvi|MSTR FS1P=<2>%TEnvi%|FIND $%DiskLN%=,!CALL NewLabel TEAM ENVI @RepMess=Mount partition(s)|SHOW - %DiskN%#1|CALC TEnvi=lnot(%EFIldr%)*%ScPart% IFEX $%TEnvi%=0,TEAM CALC TEnvi=1|CALC XEnvi=2|ENVI NEnvi=a|ENVI DEnvi=-a!TEAM CALC TEnvi=2|CALC XEnvi=1|ENVI NEnvi=-a|ENVI DEnvi=a PART -mbr -force -super -usb %DiskN%#%TEnvi% %NEnvi% %FS1P% 1048576 %Size1P% IFEX $%Size2P%>0,PART -mbr -force -super -usb %DiskN%#%XEnvi% %DEnvi% %FS2P% %Start2P% %Size2P% TEAM PART update %DiskN%|WAIT 200|PART -phy list part %DiskN%#1,TEnvi|MSTR TEnvi=<8>%TEnvi%|MSTR DEnvi=3,2,%TEnvi%|MSTR TEnvi=1,2,%TEnvi% FIND $%TEnvi%=,SHOW %DiskN%#1,%SelDsk%!FIND $%DEnvi%<>,SHOW ,%DEnvi% IFEX $%Size2P%>0, {* TEAM PART -phy list part %DiskN%#2,TEnvi|MSTR TEnvi=<8>%TEnvi%|MSTR DEnvi=3,2,%TEnvi%|MSTR TEnvi=1,2,%TEnvi% FIND $%TEnvi%=,TEAM FDRV *idlec TEnvi=*:|MSTR TEnvi=<1>%TEnvi%|SHOW %DiskN%#2,%TEnvi% } _END MESS Done! EXIT _SUB NewLabel TEAM ENVI DiskL=%DiskLN%|ENVI DiskLN=|FIND $%DiskL%=,ENVI TEnvi=0!ENVI TEnvi=1 LOOP #%TEnvi%>0, {* TEAM FDRV *setvol %SelDsk%=%DiskL%|FDRV *vol TEnvi=%SelDsk% FIND $%TEnvi%=%DiskL%,TEAM ENVI TEnvi=0|EXIT TEAM STRL TEnvi=,%DiskL%|CALC TEnvi=%TEnvi%-2|LSTR DiskL=%TEnvi%,%DiskL% IFEX $%TEnvi%<1,TEAM FDRV *setvol %SelDsk%=UTmake|ENVI TEnvi=0|EXIT } _END `В скрипте используются утилиты format2003.exe и fat32format, вшитые в ехе-шник как ресурсы #21 и #20. Они задействуются вместо стандартных средств форматирования при выборе файловой системы NTFS или ExFAT под ОС/РЕ ХР (поскольку там штатный форматировщик этого может не позволить), и для форматирования в FAT32 с поддержкой больших разделов.
|
|
вот и хочется сразу знать, что есть второй раздел и какой он по размеру, чтобы высвечивать или затемнять доступные опции Тогда, наверное, лучше отображать дополнительно только данные второго раздела флешки и не обрабатывать все накопители?Тогда скрипт будет таким (под 10-й двухраздельной флешке будут показаны 2 буковки, а под остальными ОС - второй раздел `Invisible`)TEAM ENVI^ EnviMode=1|SET$ &NL=0d 0a|FDRV &Drvs=*: FORX * %&Drvs%,&D,TEAM PART list drv %&D%,&&V|MSTR &&hd=<9>%&V%|^SET &Drv[%&hd%]=%%&Drv[%&hd%]%%%&D% TEAM PART list disk,&&AllDsk|ENVI &&FindLIST=|SET &D1= FORX * %&AllDsk%,&Find, {* TEAM PART -devid list disk %&Find%,&DskID|MSTR &&hd,&&SZ,&&Bus=<1><2><9>%&DskID% TEAM SED &DskID=1,DISK\&VEN_,1 ,%&DskID%|SED &DskID=1,IDE\\DISK,1 ,%&DskID%|SED &DskID=1,\&PROD_,_,%&DskID% TEAM MSTR &DskID=<-1>%&DskID%|SED &DskID=1,\&REV, ,%&DskID%|SED &DskID=1,\\, ,%&DskID%|SED &DskID=1,___, ,%&DskID% TEAM MSTR &DskID=<1>%&DskID%|SED &DskID=8,_, ,%&DskID% FIND $%&DskID%=,SET &DskID=- IFEX #%Bus%=2, SET Bus=(ATAPI) IFEX #%Bus%=3, SET Bus=(ATA) IFEX #%Bus%=7,TEAM SET Bus=(USB_HDD)|^SET &TEnvi=%%&Drv[%hd%]%%|FORM TEnvi=%&TEnvi%|FIND $%TEnvi%=DRIVE_USBFLASH,TEAM SET Bus=(USB_Flash) IFEX #%Bus%=11, SET Bus=(SATA) IFEX #%&SZ%>2G, @TEAM CALC &SZ=%&SZ%/1G#1| SET SZ=%&SZ%G! IFEX #%&SZ%>2M, @TEAM CALC &SZ=%&SZ%/1M#1| SET SZ=%&SZ%M ^SET &FindLIST=%&FindLIST%%&NL%%&Find%,%&Bus%,%&SZ%,%&DskID%,%%&Drv[%hd%]%% FIND $%Bus%=(USB_Flash), {* TEAM PART -hextp -phy -phy# list part %&Find%#2,TEnvi|MSTR &SZ2,TEnvi=<5><9>%TEnvi% FIND $%TEnvi%=,EXIT -!FIND $%&SZ2%=0,EXIT - IFEX #%&SZ2%>2G, @TEAM CALC &SZ2=%&SZ2%/1G#1| SET SZ2=%&SZ2%G! IFEX #%&SZ2%>2M, @TEAM CALC &SZ2=%&SZ2%/1M#1| SET SZ2=%&SZ2%M ^SET &FindLIST=%&FindLIST%%&NL%%&Find%#2,%&Bus%,%SZ2%,%&DskID%,Invisible }} FILE .\HDD_data.txt WRIT .\HDD_data.txt,$*,%&FindLIST%Результат0,(ATA),465.8G,ST500DM002-1BC142,C:D:E:F: 1,(USB_Flash),87.4M,GENERIC FLASH DISK,G: 1#2,(USB_Flash),82M,GENERIC FLASH DISK,Invisible 2,(USB_Flash),7.5G,JETFLASH TRANSCEND 8GB,H: 2#2,(USB_Flash),12M,JETFLASH TRANSCEND 8GB,Invisible
Последний раз редактировалось: Гость (2018-02-23 11:34), всего редактировалось 7 раз(а)
|
dialmak
  - Стаж: 9 лет 2 месяца
- Сообщений: 842
- Репутация:40[+] [-]
|
Да практически любым менеджером разделов можно слепить. Можно и TBScript написать. Кстати неплохая идея. Так и сделаю. nikzzzz, как правило под gdisk предполагают этот. Есть версии под виндой и линукс. Уникальная прога. А вот от Symantec я не слышал, нужно пощупать.
|
|
Это разные GDISK-и. nikzzzz говорит о GDISK от Symantec, наследника Parted Magic, часть Ghost. Насколько я помню, у него "неправильная" нумерация - накопители он начинает считать от первого (а не от 0, как принято). Я тоже экспериментировал с GDISK, но что-то не сложилось. Да и великоват он, практически не пакуется.
Последний раз редактировалось: Гость (2018-02-23 11:23), всего редактировалось 1 раз
|
dialmak
  - Стаж: 9 лет 2 месяца
- Сообщений: 842
- Репутация:40[+] [-]
|
nikzzzz Да, но с MBR тоже работает. Из уникальных возможностей - создание гибридного MBR, что примеру позволяет грузить XP на GPT. К сожалению не поддерживает ключи, только интерактивно использовать можно.
|
 Отправлено: 25-Фев-2018 21:42
(спустя 2 дня 10 часов)
|
... есть ли в PECMD аналог команды "bootice /DEVICE=E: /partitions /firstpart=1"? То есть "сделать второй раздел флешки доступным" Как оказалось, есть - обмен разделов... И очень даже просто (в переменной DiskN указываем номер диска).PART -phy -super -force -up -hup -swap:2 %DiskN%#1
|
SmokieBlahBlah
  - Стаж: 9 лет 6 месяцев
- Сообщений: 42
- Репутация:2[+] [-]
|
51311расширенные и невидимые /второй раздел флешки/ разделы в список не попадут второй раздел посмотреть невозможно? или почему ведь нужная вещь...51236второй раздел флешки нельзя же подключить одновременно с первым. вот и хочется сразу знать, что есть второй раздел и какой он по размеру, чтобы высвечивать или затемнять доступные опции немножечко под себя подправил скрипт а как обрезать последний символ в строке? что добавить в строку 20? и не понимаю: получить тип файловой системы невозможно для раздела без буквы?скриптTEAM ENVI HdData=|SET$ &NL=0d 0a|PART list disk,AllDrv FORX* %AllDrv%,CurDrv, {* TEAM PART -devid list disk %CurDrv%,DskNam|MSTR HdNum,HdSize,HdBus=<1><2><9>%DskNam%|SED DskNam=1,DISK\&VEN_, ,%DskNam% TEAM MSTR DskNam=<~13>%DskNam%|SED DskNam=1,\&REV, ,%DskNam%|SED DskNam=1,\\, ,%DskNam% TEAM MSTR DskNam=<1>%DskNam%|SED DskNam=1,\&PROD_, ,%DskNam%|SED DskNam=6,_, ,%DskNam% FIND $%DskNam%=, SET DskNam=- 'IFEX #%HdSize%>2G, @TEAM CALC HdSize=%HdSize%/1G#1|ENVI HdSize=%HdSize%G!IFEX #%HdSize%>2M,@TEAM CALC 'HdSize=%HdSize%/1M#1|ENVI HdSize=%HdSize%M IFEX #%HdBus%=2,ENVI HdBus=ATAPI!IFEX #%HdBus%=3,ENVI HdBus=ATA!IFEX #%HdBus%=11,ENVI HdBus=SATA IFEX #%HdBus%=7, TEAM ENVI HdBus=USB_HDD|DISK TEnvi,%CurDrv%,1|FORM TEnvi=%TEnvi%|FIND $%TEnvi%=DRIVE_USBFLASH,ENVI HdBus=USB_Flash ENVI HdData=%HdData%%&NL%%HdNum% %HdBus% %HdSize% %DskNam% ENVI PtsData= PART list part %CurDrv%,AllPrt FORX* %AllPrt%,CurPrt, {* IFEX $%CurPrt%<1,EXIT -! 'TEAM PART list part %CurDrv%#%CurPrt%,TEnvi|MSTR PtSize,PtLet=<5><8>%TEnvi%|FIND $%PtLet%=,ENVI PtLet=* 'ENVI HdData=%HdData%|%CurPrt%,%PtLet%,%PtSize% TEAM PART list part %CurDrv%#%CurPrt%,TEnvi|MSTR PtSize,PtLet=<5><8>%TEnvi%|FIND $%PtLet%=,ENVI PtLet=*: ENVI PtsData=%PtsData%%PtLet%,%PtSize%| } ENVI HDdata=%HDdata% %PtsData% } 'MESS %HDdata% FILE .\HDD_data.txt WRIT .\HDD_data.txt,$*,%HDdata% EXITрезультат0 SATA 240057409536 KINGSTON SUV400S *:,103809024|C:,38461767680|G:,201490169856| 1 SATA 1000204886016 TOSHIBA HDWD110 *:,103809024|*:,44970278912|D:,955126906880| 2 USB_Flash 32937869312 [JF700] TRANSCEND I:,28641853440|
Последний раз редактировалось: SmokieBlahBlah (2018-02-26 08:54), всего редактировалось 1 раз
|
SmokieBlahBlah
  - Стаж: 9 лет 6 месяцев
- Сообщений: 42
- Репутация:2[+] [-]
|
51340PART -phy -super -force -up -hup -swap:2 %DiskN%#1 как бы обяснить. эта команда работает "в режиме toggle". то есть PECMD будто бы запутывается и не знает, какой раздел фактически первый, а какой второй, и тупо меняет их местами. как в итоге моя программа будет знать, что показан именно фактический первый раздел? не понятно. придётся наверное bootice всё-таки использовать "bootice /DEVICE=I: /partitions /firstpart=0" делает доступным именно первый раздел, /firstpart=1 - второй раздел
|
|
По-порядку: посмотреть данные и расширенного, и невидимого раздела можно. Но обрабатывать эти разделы нужно иначе. PECMD маркирует: первичные разделы: 1 2 3 4; отсутствующие разделы: -1 -2 -3 -4; расширенные разделы: @4, невидимые (в данной ОС) разделы флешки: =2 (=3 =4). Чтобы обрезать последний символ в строке из переменной %Data% (999 - максимальное количество символов в %Data%, я пока не нашёл как подменить): MSTR Data=-2,999,%Data% Получить тип файловой системы без буквы - вероятно, можно, для ОС Windows 7 и новее. Но я не знаю как. Можно создать скрипт с единственной записью "PART -gui" и посмотреть - там видно тип ФС для невидимых разделов флешки (под ХР - не видно).Отображение ФС для невидимого раздела флешки под 7-кой (8, 8.1, ранние билды 10-ки)
Но этот скрипт зашифрован, расшифровать его не получилось. Если кому интересно - вот сам скрипт DiskMgr.wcs, вытащил его из ехе-шки. По поводу "первого раздела". Есть 3 варианта интерпретации. Во-первых, физический первый раздел - это раздел, который создан в начале накопителя /начиная с 64-го или 2048-го сектора, т.е., 2048(или 64)*512(байт в секторе)=1024k(32k)/. Теоретически, можно начинать и с другого сектора (например, с 4096, или 1024), но практически все менеджеры дисков делают так. Причем с 64 - это уже устарело (при таком раскладе первый раздел точно будет невыровнен), все новые менеджеры создают первый раздел с 2048-го сектора. Второй вариант - согласно порядку размещения данных о разделах в MBR. ОС до 10-ки показывают только первый раздел из записи в MBR. Поэтому ВСЕ утилиты, "обменивающие" видимый и невидимый разделы, делают одно и то же: считывают данные о 1-м и 2-м разделе в MBR и записывают их наоборот. Под 10-кой актуален и 3-й вариант: какой раздел первый для ОС до окончания сеанса работы (т.е., при "обмене" дисков инфа в MBR обновляется, но для ОС останется прежней - диски местами не поменяются).Вот где в скрипте DiskMgr.wcs можно глянуть инфу по всем трём вариантам 'первого' раздела флешки (1024к=2046*512)
Последний раз редактировалось: Гость (2018-02-27 22:03), всего редактировалось 1 раз
|
avalat
  - Стаж: 10 лет
- Сообщений: 499
- Репутация:127[+] [-]
|
Русская справка по PECMD. Перевод машинный, но приличный. ----------------------------------------- Обновлён 26.03.2024
Последний раз редактировалось: avalat (2024-03-26 21:51), всего редактировалось 26 раз(а)
|
Страница 9 из 28
Текущее время: 20-Апр 02:35
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|