zds1210 发表于 2015-8-19 12:32:55

开源,基于分区助手命令行的UD三分区一键无损制作脚本,uft8,支持win10!20190504

本帖最后由 zds1210 于 2019-5-4 15:26 编辑


广告:UD老三,法驾中原,无损神功,威震天下。
[推荐]分区助手功能很强,支持从U盘左右端分区,支持指定偏移量分区,支持无损分区;安全写入隐藏区PE,不会误操作到数据区……总之,灵活、安全、稳定,强烈推荐用于三分区及U+B+两分区制作。
分区助手命令行传送门   默默的对应的au3程序版本传送门(默默授权独剑编译的最新版本)    王者之风改进的au3程序版本传送门 程序版无更新,win10下无损制作一定要用bootice或diskgeuis手工删除efi区盘符分配
提示:当升级制作时候,新PE体积增加比较大,原UD区和efi区空间不够时,无损全新制作一次就好了。

更新预告:强制结束常用分区软件进程,进一步解决U盘占用问题;解决分区助手命令行写入目录中不支持中文带空格的问题;解决复制bpb到UD的mbr会丢失数据的问题;解决UD区不能完全无损清空的问题;解决分区助手命令行制作的efi区兼容性稍差的问题。
[警告]分区助手命令行在无损分区操作方面很强,但仍可能丢失U盘数据,同时在无损制作时一定要保持不间断电源。
测试PE:cmd和王者的au3主程序 制作,双03和10PE   http://bbs.wuyou.net/forum.php?mod=viewthread&tid=410621&extra=page%3D1

更新说明:20190504版:修正了先UI后UD方案,在win10下强制重新拨插U盘,以解决在win10下全新制作丢失U盘盘符的问题。20181225版:设计了新的pecmd方案,win10系统中自动删除U盘efi区盘符分配,较完美的解决了win10下的无损制作问题,支持U+隐藏盘、U+高端隐藏盘和UDU深三分区无损制作成UD三分区。无弹窗,不再调整U盘盘符。20181104版:优化了win10系统的无损制作和还原,减少可能错误;并增加bootice删除PE分区盘符,来解决win10系统下无损制作的方案,因出错会弹出bootice窗口,暂关闭,静待分区助手命令行增加类似功能。20181014f版:增加pecmd组件,win10系统中自动删除U盘efi区盘符分配,较完美的解决了win10下的无损制作问题,支持U+隐藏盘、U+高端隐藏盘和UDU深三分区复杂在win10无损制作成UD三分区。20181003版:优化了管理员权限获取(无忧论坛lintrainwy)。20181002版:适配win10——修正右键以管理员权限运行时的路径错误,8 10系统默认以管理员权限运行,win10系统下强制隐藏efi区,修正先UD后UI制作时因U盘占用不能正常制作的问题;修正了win10下无法无损还原U盘的bug。
20170305版:更新fbinst plus至1.4版,强制格式化UD区为utf-8格式,支持把utf-8格式fba写入UD区 ,解决UD乱码之争。(原版的fbinst经修正,也支持命令行格式为utf-8)20160811版:修正无损升级PE时,efi区可见,重新写入efi区数据,U盘盘符丢失不能制作的问题;无u盘时强制退出;还原U盘,不再磁盘修复以免因U盘错误,图形界面程序卡死;其它细节优化。20160802版:增加一先U+后UD全新制作UD三分区的模块20160306版:更新分区助手命令行至6.1.2版,解决直接向隐藏efi区写入文件卡死的问题;无损升级制作时候,直接删除efi区全部文件和目录,不再用格式化efi区。20150903抗战胜利特别版:全新制作和全新还原时,chkdsk只查看磁盘错误,并卸载U盘以解决U盘占用。3.1模块:更新分区助手命令行至2015826正式版,解决在xp下运行提示错误的问题;修复无损还原时候不能清空UD区的问题(暂时没有彻底删除UD区);尝试增加自定义配置的支持。
3.0模块:采用分区助手命令行20150826版测试版,解决了xp下向隐藏区写入文件的问题;新增加了两个功能,一个是,重建MBR的功能,另一个是修改分区盘符的功能。实测在xp/7下写PE文件正常。2.8模块:解决脚本放在空格目录中制作失败的问题(主要是分区助手不支持把带空格的目录复制文件到隐藏区,iso解压到temp解决);解决磁盘编号大于8不能制作的问题;修正无损制作U+ 隐藏盘时,无激活区的问题;改进无损还原UD区占大空间的问题;其它优化改进。2.7模块:在分区助手作者disktool亲自指导下——弃用手工选择U盘脚本;文件结构简化;制作前强制卸载并修复U盘错误,增加无损制作可靠性;智能选择并清空未分配盘符的有效分区,解决低端隐藏盘不能制作问题,解决复杂结构的U盘制作问题;并增加无损还原U盘脚本。2.5和2.6的f模块:修正没有安装7z的机子中,不能解压iso的错误。2.6模块:智能选择U盘磁盘编号,多个U盘选择最后一个,全自动制作。2.5模块:增加了升级制作脚本,增加了还原U盘脚本,最后一个要选择U盘编号的版本。2.4模块:智能选择U盘盘符。2.3模块:增加了全新制作脚本,以让大家明白此法的简单可行。2.2模块:支持efi区文件整体打包成efi.iso。2.1模块:20150820,分区助手作者发来了新版的分区助手命令行,增加了直接向隐藏efi区写文件的功能,列磁盘增加只列出移动磁盘的功能。21日,不才改进脚本,成功把fba写入UD区,用分区助手命令行把散开的efi.iso写入efi区。一切大功告成,实践证明,无损数据区制作UD和UD三分区是可行的,就等大神们编程实现了。
UD三分区简介:UD三分区=UD区+exfat或ntfs格式的激活的可见data区+fat格式的隐藏高端efi区
UD三分区,UD加U+高端强强联合,优势互补,打造史上最强的bios/uefi万能启动PE。UD三分区因具有超强的bios/uefi双启兼容性、一键制作的超强方便性、PE全隐藏的超强安全性、方法标准通用的超强可移植性、fbinst和grub4dos全开源的超强开放性、数据区可存放大于4G文件的超大文件存储性,越来越受到电脑公司和PE爱好者的喜爱,成为后bios时代主流PE部署方法之一。
但因传统的UD三分区编程技术比较复杂,制作UD区和efi区会相应的破坏对方,所以UD三分区一键制作编程并没有普及起来。为实现无损数据区制作,主要还是为了大大简化UD三分区编程制作,让人人都能编出UD三分区制作主程序,不才特请傲梅分区助手作者disktool,开发出无损分区的相应命令行,用于简化UD三分区编程制作,实现无损数据区制作UD三分区 。现在已经开发出一个cmd脚本,自己测试是成功的。基本上是模拟手工制作教程。编程高手可以对照手工教程及分区助手命令行,来编程实现。

关于无损数据区制作UD三分区大致的流程
基于ntfs格式的U盘,很容易无损的分出左端区和右端区,而左端未分配空间区用fbinst命令行非强格式就成UD区。所以,思路如下:
1获取U盘编号和盘符,并判断U盘格式,ntfs格式磁盘不动,fat16和fat32用convert无损转换为ntfs格式;exfat强格为ntfs,这个数据丢失,不能无损。
2用分区助手清空U盘当前盘左端和右端所有分区,合并空间到ntfs数据区。这样子可以解决二次制作问题,解决复杂U盘制作失败的问题。
3用分区助手调整出右端的efi区,并格式为fat,不激活,不设置隐藏属性
4用分区助手调整出左端的区,并用fbinst非强格成UD区。(非强格,未分配空间就无损数据区变成了UD区)
5用分区助手把iso数据写入efi区。
6用fbinst把fba文件写入UD区。
@Echo Off
rem cd /d "%~dp0"
COLOR 2F
echo 检查 管理员权限...
%1 mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&& exit
pushd "%CD%"&& CD /D "%~dp0"

Set TT=独剑制作的无损UD三分区脚本
TITLE %TT%

CLS
Echo.
Echo.
Echo        ╭══════════════════╮
Echo        ║                  ║
Echo    ╭═══┤ %TT%!      ├═══╮
Echo    ║   ║                  ║   ║
Echo    ║   ╰══════════════════╯   ║
Echo.
rem 变量说明: %uid%—U盘磁盘编号%udri%—U盘盘符%drid%—U盘磁盘格式
rem 变量说明: %padel%—要删除的非数据分区%padel%—显示无损制作成功
rem 中间文件说明 Usee0.txt-U盘磁盘编号查看文件,用于判断U盘磁盘编号
rem 中间文件说明 Usee.txt-U盘磁盘格式查看文件,用于判断U盘盘符和格式

echo列出指定电脑上所有移动磁盘
.\bin\partassist.exe /list /usb
.\bin\partassist.exe /list /usb /out:.\bin\Usee0.txt
Set uid=
Echo.
echo 智能查找U盘磁盘编号,多个U盘时候选择最后一个。
Set uid=
for %%j in (1 2 3 4 5 6 7 8 9 10 11 12) DO (find/i "%%j      |" .\bin\Usee0.txt>nul&&SET uid=%%j)
if not defined uid echo 找不到U盘,无法制作自动退出!!!!&&pause&&del .\bin\Usee0.txt /q&&goto EX
echo 你的U盘磁盘编号为%uid%
del ".\bin\Usee0.txt"/q

Echo.
echo列出U盘上的所有分区
.\bin\partassist.exe /list:%uid%
.\bin\partassist.exe /list:%uid% /out:.\bin\Usee.txt

Echo.
echo 智能查找U盘所在盘符,移动硬盘自动选择最左端分区
Set udri=
for %%i in (Z Y X W U T SR Q P O N M L K J I H G F E D C) DO (
                find/i "%%i:" .\bin\Usee.txt>nul&&SET udri=%%i)
if not defined udri echo 找不到U盘盘符,无法制作自动退出&&pause&&del .\bin\Usee.txt/q&&goto EX
echo 你的U盘所在盘符为%udri%盘

Echo.
echo 制作UD三分区启动盘,无损数据区制作,请保持不间断电源!
echo继续请按任意键,退出请关闭窗口!&&pause

Echo.
echo   判断磁盘格式,fat16、fat32转换为ntfs,可无损制作;exfat格式不能无损制作,只能全新制作
Echo.
set drid=exfat
find /c /i "fat16" .\bin\Usee.txt>nul&&set drid=fat16
find /c /i "fat32" .\bin\Usee.txt>nul&&set drid=fat32
find /c /i "ntfs".\bin\Usee.txt>nul&&set drid=ntfs
find /c /i "exfat" .\bin\Usee.txt>nul&&set drid=exfat
rem del .\bin\Usee.txt/q
echo 你的U盘格式为%drid%
rem 强制卸载并修复磁盘错误,解决U盘占用,以增强无损制作的可靠性
rem if not %drid%==exfat echo.&&echo 强制卸载并修复磁盘错误,以增强无损制作的可靠性&&chkdsk %udri%: /x /f
echo.&&echo 强制修复U盘磁盘错误,以增强无损制作的可靠性&&chkdsk %udri%: /x /f
if %drid%==exfat echo 你的U盘格式为exfat,只能格式化为ntfs,所有数据丢失,请备份数据!&&pause&& .\bin\partassist.exe /fmt:%udri% /fs:ntfs /label:data
if %drid%==fat16echo.&&echo 你的U盘格式为fat16,先无损转换为ntfs!&&CONVERT %udri%: /FS:NTFS /V /NoSecurity
if %drid%==fat32echo.&&echo 你的U盘格式为fat32,先无损转换为ntfs!&&CONVERT %udri%: /FS:NTFS /V /NoSecurity
if %drid%==ntfs   echo.&&echo 你的U盘格式为ntfs,无损制作效果刚刚的!

echo.
echo 下面自动清空data区左端和右端分区恢复单一分区,以免二次制作时候受影响而导致制作失败
rem 带*的为PE区而非数据区,智能判断出分区ID并清空
setpadel=
find /c /i "0      | *:" .\bin\Usee.txt>nul&&set padel=0
find /c /i "1      | *:" .\bin\Usee.txt>nul&&set padel=1
ifdefined padel .\bin\partassist.exe /hd:%uid% /del:%padel%
rem 强制把数据区左右两端的未分配空间扩展到数据区,恢复到单一分区,4k对齐
.\bin\partassist.exe /hd:%uid% /resize:%udri% /extend:auto /align
rem if %padel%==0.\bin\partassist.exe /hd:%uid% /resize:%udri% /extend:right /align
rem if %padel%==1.\bin\partassist.exe /hd:%uid% /resize:%udri% /extend:left /align
del .\bin\Usee.txt/q

Echo.
echo 从U盘右边无损分出300M未分配空间用于EFI区
.\bin\partassist.exe /resize:%udri% /reduce-right:300

Echo.
echo 创建并格式化右端的efi区,fat16,4k对齐,不激活,不设置隐藏属性,设置卷标为efi
rem .\bin\partassist.exe /hd:%uid% /cre /pri /size:auto/end /fs:fat16 /act /hide /align /label:EFI
.\bin\partassist.exe /hd:%uid% /cre /pri /size:auto/end /fs:fat16/align /label:EFI

Echo.
echo从U盘左边无损分出680M未分配空间用于UD区,4k对齐
.\bin\partassist.exe /resize:%udri% /reduce-left:680 /align

Echo.
echo 把左边分出的680M空间非强格成UD区,指定UD主分区为8M,剩下的空间全部变为UD扩展空间,故UD扩展空间不用指定
rem .\bin\fbinst.exe (hd%uid%)format--fat32 --zip --chs --primary 8M--align
echo on
.\bin\fbinst.exe %udri%: format--fat32--primary 8M--align
@echo off
rem 写入fba文件时候,自动建立了fb主菜单,以下语句关闭;文件fb.cfg可以删除
rem .\bin\fbinst.exe %udri%: add-menu "fb.cfg" "fb.cfg

rem U+低端隐藏盘和高端隐藏盘制作时,会出现无激活区情况,这里强制激活data区;0为data区,1为efi区
echo.&&echo 设置数据区卷标为data,并强制激活data区&&label %udri%: data&&.\bin\partassist.exe /setact:0 /hd:%uid%
Echo.
echo 这个时候,三分区已经形成,UD区已经格式化成功,UD主引导也形成!

Echo.
echo 正在把efi.iso文件写入EFI区,请稍候……
if exist %temp%\uefi\ rd "%temp%\uefi\" /s /q
.\bin\7z.exe x .\pediy\efi.iso -y -aos -o"%temp%\uefi\"
if exist %temp%\uefi\ rd "%temp%\uefi\" /s /q
.\bin\partassist.exe /hd:%uid% /whide:1 /src:%temp%\uefi
rd "%temp%\uefi\" /s /q

Echo.
echo 正在把ud.fba写入UD区,请稍候……
rem .\bin\fbinst.exe %uid%: load .\pediy\ud.fba
.\bin\fbinst.exe %udri%: load .\pediy\ud.fba

rem 通过移除高端区的盘符来隐藏高端efi分区
Echo.
echo隐藏高端efi分区
.\bin\partassist.exe /hd:%uid% /setletter:1 /letter:*

set exdata=
if not %drid%==exfat set exdata=检查一下你数据区数据还在不在吧,
Echo.
echo 已经成功把PE写入UD区和EFI区!%exdata%用佛大的qemu虚拟机测试一下bios/uefi双启吧。
pause
goto EX
:EX
@echo on

同时,用这个分区助手命令行,可以大大简化全新制作UD三分区技术,制作UD三分区和U深三分区不再有什么核心秘密,全新制作思路如下:
1用fbinst命令行强格出一个UD区,并把fba文件写入。(U深区用ultraiso写入)
2用分区助手命令行把数据区格式为nfs
3用分区助手命令行无损UD区在U盘右端分出一个efi区,并格式为fat格式,不激活,保持隐藏,
4用最新版 的分区助手命令行,把efi.iso文件散开后直接写入efi区。
大功告成。
可以预见,外面的商业PE都会加上UD三分区来支持efi。不才的推广三分区使命告一段落。

分区助手命令行测试中存在的主要问题:
1写入隐藏区,不支持中文源文件夹中带空格,写入文件貌似不能用相对路径如...。
2对exfat格式盘不能无损操作。
建议增加:清空指定编号的分区所有文件和文件夹功能。
增加清空UD区成普通未分配空间的功能。
3制作出来的efi区的efi启动兼容性差一些。
关于efi的fat格式说明:应根据磁盘分区大小选用fat 16 和32格式,按微软的标准来做兼容性最好。一般分区在2G以下,用fat16格式;分区在2G以上用fat32。这个应该有定论

U盘制作失败原因:
1.没有管理员权限,特别是win 8 8.1 10系统中
2.U盘占用,制作时候不能打开磁盘管理软件类,
程序设计时可以先删除U盘盘符再分配盘符,解决U盘占用。







2012zhd 发表于 2015-8-20 11:30:30

制作很成功,感谢剑大。
怎么不能传图片了。

awnuitfk 发表于 2015-8-20 06:09:18

{:3_137:}      不错不错!!!

yesfei 发表于 2016-9-4 08:46:20

哪个兼容性好点

2012zhd 发表于 2015-8-20 13:29:31

脚本4重新制作有问题,脚本5正常了。

krayli 发表于 2015-8-20 09:58:28

如果能做成GUI版本的就更好了。

2012cwz 发表于 2015-8-20 09:21:01

小白喜欢图形化操作

2011npwjm 发表于 2015-8-20 09:02:37

进来学习一个,分享了

engineerlzk 发表于 2015-8-20 07:33:25

谢谢,需要学习下

hhh333 发表于 2015-8-22 16:58:30

编程实现干吗?又不是做软件卖。就是那么几步,能玩的绝对做得来,不能玩的直接U+完了,老机基本都进垃圾堆了。UD也没什么市场了,再者M大不是有UDM吗,右键选ISO写入U盘玩完。

磁盘的情况是很复杂的,弄不好出错丢数据就麻烦了,手工做保险些。

lbw2007 发表于 2015-8-19 12:47:13

前排围观……

2012zhd 发表于 2015-8-19 13:26:49

来学习的。

虫子樱桃 发表于 2015-8-19 13:50:51

支持下,就是不晓得咋个制作

disktool 发表于 2015-8-19 14:31:34

赞一个,期待楼主教程。

zds1210 发表于 2015-8-19 15:12:48

虫子樱桃 发表于 2015-8-19 13:50
支持下,就是不晓得咋个制作

正在制作简明教程。很简单的。

fuldho 发表于 2015-8-19 16:39:38

等待中.....................

zds1210 发表于 2015-8-20 01:58:40

U盘制作高手进来下,可以制作了。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 开源,基于分区助手命令行的UD三分区一键无损制作脚本,uft8,支持win10!20190504