dos时代菜鸟
发表于 2022-11-4 07:08:39
本帖最后由 dos时代菜鸟 于 2022-11-4 07:47 编辑
D_M_GuYing 发表于 2022-11-4 04:37
VM下,测试,光驱启动,我的C盘下,并没有WEPE.WIM,文件在ESP分区里
我也在试图解决这个问题,不过我的 ...
multi(0)disk(0)rdisk(0)partition(1)
不一定就是 第一硬盘 第1分区。
RDPATH=MULTI(0)DISK(0)RDISK(2)PARTITION(4)
也不一定是 第2硬盘 的 第4分区。
这个结果 与 pecmd 的 disk /part 指令引用的 硬盘号 和 分区号 不对等,这个 表达是用 ntdll.dll 得出的。
dos时代菜鸟
发表于 2022-11-4 07:17:09
527104427 发表于 2022-11-3 23:28
原则上是对应的,但注册表的符号链接不按常理出牌,这就不对应了
确实 对不上,如果中间变化了,就 不行了。
dos时代菜鸟
发表于 2022-11-4 07:19:12
D_M_GuYing 发表于 2022-11-4 04:37
VM下,测试,光驱启动,我的C盘下,并没有WEPE.WIM,文件在ESP分区里
我也在试图解决这个问题,不过我的 ...
目前光盘启动 是 会出错,你先试试 boot.wim 在硬盘的情况
eaphoenix
发表于 2022-11-4 07:46:00
D_M_GuYing 发表于 2022-11-4 05:01
IFEX %wzPath%,!
{
MOUN !\WEPE\WEPE.INI,X:\a,1
学习了。
D_M_GuYing
发表于 2022-11-4 08:27:22
dos时代菜鸟 发表于 2022-11-4 07:19
目前光盘启动 是 会出错,你先试试 boot.wim 在硬盘的情况
实机测试,两块SSD,分别安装PE并启动,无论是否在隐藏分区,我的这段代码都能分配盘符和准确定位,
再多硬盘的情况就没条件测试了
IFEX %temp%\3.INI,
{
LOAD %temp%\3.INI
DISK ,%RDISK%,%PARTITION%,1
CALL getNoDrv
DISK%nodrv%,%RDISK%,%PARTITION%,1
ENVI wzPath=%nodrv%\WEPE\WEPE.INI
IFEX %wzPath%,!
{
dos时代菜鸟
发表于 2022-11-4 09:07:19
又更新了一下,适用 cdrom 的状态了。
最好 先运行 盘符整理,把没有盘符的win可识别分区都按顺序 分配了盘符。
dos时代菜鸟
发表于 2022-11-4 09:17:46
dos时代菜鸟
发表于 2022-11-4 09:31:11
本帖最后由 dos时代菜鸟 于 2022-11-4 09:34 编辑
D_M_GuYing 发表于 2022-11-4 08:27
实机测试,两块SSD,分别安装PE并启动,无论是否在隐藏分区,我的这段代码都能分配盘符和准确定位,
再 ...
是这样理解么?
记得 脚本区 有一个关于 这个理解的讨论,这样理解 会有偏差的。 不是一个 api 生成的 分区表达式,必须 转换下,机械的处理是不可靠的。这样得出的 disk 和 part 不一定真实。
D_M_GuYing
发表于 2022-11-4 09:43:08
dos时代菜鸟 发表于 2022-11-4 09:31
是这样理解么?
是呀,这就是大家最开始觉得五花八门,不好实现的原因
dos时代菜鸟
发表于 2022-11-4 10:12:08
D_M_GuYing 发表于 2022-11-4 09:43
是呀,这就是大家最开始觉得五花八门,不好实现的原因
用 pecmd 获取 系统未使用盘符,用 Fdrv -idle 指令就可以。
D_M_GuYing
发表于 2022-11-4 10:24:36
dos时代菜鸟 发表于 2022-11-4 10:12
用 pecmd 获取 系统未使用盘符,用 Fdrv -idle 指令就可以。
哦,哦,谢谢呀,我写的太笨了
dos时代菜鸟
发表于 2022-11-4 10:31:24
D_M_GuYing 发表于 2022-11-4 10:24
哦,哦,谢谢呀,我写的太笨了
那个 截取注册表内容 获取disk 和 part 的功能,不用 bat ,用 pecmd 也是可以的,看我上面的那个 x.ini
关键是 这样获取的结果 不靠谱。
我是 用之前 脚本版块 5大 的一个pecmd脚本,调用 ntdll.dll 的api 把他转换成 可以由 pecmd 的 disk/part 等命令使用的 格式和 编号。然后,才敢用 disk /part 等指令来操作。至少也要转换成 volumn 这样 dos 下可以用的 卷标识。
D_M_GuYing
发表于 2022-11-4 10:36:55
dos时代菜鸟 发表于 2022-11-4 10:12
用 pecmd 获取 系统未使用盘符,用 Fdrv -idle 指令就可以。
哎,没吃透PECMD呀,两行就完事的,要我弄了十几行
FDRV *idle nodrv
MSTR s_nodrv=7,2,%nodrv%
dos时代菜鸟
发表于 2022-11-4 12:36:02
D_M_GuYing 发表于 2022-11-4 10:36
哎,没吃透PECMD呀,两行就完事的,要我弄了十几行
FDRV *idle nodrv
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=423468&pid=4212767&fromuid=1198
这种方法 不靠谱,以前研究过
dos时代菜鸟
发表于 2022-11-4 14:12:40
原来 pecmd 的part list volume 已经进化。
可以 直接引用 这种路径,获取对应分区信息
part -drv list volume\ArcName\multi(0)disk(0)rdisk(0)partition(1),&part_info
弄了个 基本上能够满足需求的脚本。放在1楼。如此,精准到 boot.wim 所在位置 调取对应外置就成为可能了
dos时代菜鸟
发表于 2022-11-4 20:18:46
本帖最后由 dos时代菜鸟 于 2022-11-4 20:21 编辑
如图,在 pe 的 Wim 文件并列放置一个 配置文档,当 pe 启动时,如果能精准定位到 wim 位置,并确定存在 同名 ini 配置文件,就以这个 ini 文件作为启动脚本调用。
如此,给pe 增加一些 设置 就变得容易多了。
这种精准定位 wim 位置,避免了 用 forx 轮巡搜索可能加载了 别的同名外置或者脚本的情况。
dos时代菜鸟
发表于 2022-11-4 21:14:28
dos时代菜鸟 发表于 2022-11-4 20:18
如图,在 pe 的 Wim 文件并列放置一个 配置文档,当 pe 启动时,如果能精准定位到 wim 位置,并确定存在 同 ...
不同的pe有不同的文件夹位置,有不同的配置文件和外置程序位置,精准定位,更适合pe的维护。
dos时代菜鸟
发表于 2022-11-4 21:15:54
就算多个pe公用一个文件夹,也还有配置文件可以最补充设置调整。
D_M_GuYing
发表于 2022-11-5 03:46:41
本帖最后由 D_M_GuYing 于 2022-11-5 06:36 编辑
vm虚拟机下测试新版本boot.wim.drv-2.4
测试PE:【22.11.01】大漠孤鹰Win11PE_x64_APFS
光驱启动定位到了,成功!!
硬盘启动(PE安装到了ESP分区)如图:
运行boot.wim.drv-2.4前
运行后,ESP盘符变为C盘
D_M_GuYing
发表于 2022-11-5 06:31:24
实机(外星人m15r6)下测试新版本boot.wim.drv-2.4
测试PE:【22.11.01】大漠孤鹰Win11PE_x64_APFS
硬盘启动(PE安装到了ESP分区),ESP分区盘符无变动,但结果和VM虚拟机测试的一样
UltraISO,隐藏启动分区模式写入U盘,运行后如图
dos时代菜鸟
发表于 2022-11-5 07:53:45
本帖最后由 dos时代菜鸟 于 2022-11-5 08:09 编辑
D_M_GuYing 发表于 2022-11-5 06:31
实机(外星人m15r6)下测试新版本boot.wim.drv-2.4
测试PE:【22.11.01】大漠孤鹰Win11PE_x64_APFS
pecmd2012 是啥版本?估计是还没进化的 pecmd 没有
part -drv list volume\ArcName\%value1%,&part_info
这种获取硬盘分区的写法。
换成 最新版的再看看呢?
多谢测试
特意下载那个pe 测试,确实 因为 pecmd 版本太低导致。
D_M_GuYing
发表于 2022-11-5 08:24:02
dos时代菜鸟 发表于 2022-11-5 07:53
pecmd2012 是啥版本?估计是还没进化的 pecmd 没有
part -drv list volume\ArcName\%value1%,&part ...
嗯,我也细看了下,应该是版本原因,可大部分PE都是这个版本
开始以为 part list cdrom 没问题part -drv list volume也应该没问题呢
dos时代菜鸟
发表于 2022-11-5 08:33:43
D_M_GuYing 发表于 2022-11-5 08:24
嗯,我也细看了下,应该是版本原因,可大部分PE都是这个版本
开始以为 part list cdrom 没问题part -drv ...
之前也考虑 这个问题,所以把 调用 api 的 脚本放进来了,后来发现 新版 可以直接用,就把那些代码取消了。
另外 ,pecmd 可以简单创建 vhd ,不用调用 diskpart 。
D_M_GuYing
发表于 2022-11-5 08:35:28
我下了 PECMD2012.1.88.05.94Stable-220825U测试.7z
不行呀,,能否给我你的PECMD.EXE
Yuanshen
发表于 2022-11-5 08:37:51
应该可以。
D_M_GuYing
发表于 2022-11-5 09:13:21
{
MOUN !\WEPE\WEPE.INI,X:\a,1
FILE X:\a
FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
新版本的PECMD.EXE 要是能实现红色部分,那分配盘符的事情就解决了
{
MOUN MULTI(0)DISK(0)RDISK(0)PARTITION(1)\WEPE\WEPE.INI,X:\a,1
FILE X:\a
FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
dos时代菜鸟
发表于 2022-11-5 09:19:19
D_M_GuYing 发表于 2022-11-5 09:13
{
MOUN !\WEPE\WEPE.INI,X:\a,1
FILE X:\a
如果 不提前运行 分区挂载,而是 即得 即挂载,也是可以的。
几条代码就可以。
从 reg 获取路径 找出 对应 硬盘号和分区号。
挂载的事情 你懂的。
D_M_GuYing
发表于 2022-11-5 09:25:23
dos时代菜鸟 发表于 2022-11-5 09:19
如果 不提前运行 分区挂载,而是 即得 即挂载,也是可以的。
几条代码就可以。
嗯,,,
你的PECMD.EXE能附件一个不,我下载了好几个都不行
dos时代菜鸟
发表于 2022-11-5 10:00:47
D_M_GuYing 发表于 2022-11-5 09:25
嗯,,,
你的PECMD.EXE能附件一个不,我下载了好几个都不行
dos时代菜鸟
发表于 2022-11-5 10:09:28
D_M_GuYing 发表于 2022-11-5 09:25
嗯,,,
你的PECMD.EXE能附件一个不,我下载了好几个都不行
我通常都是先对所有识别分区分配盘符