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能附件一个不,我下载了好几个都不行

我通常都是先对所有识别分区分配盘符
页: 1 [2] 3 4 5 6
查看完整版本: 确定当前pe 对应的 boot.wim 位置,基本解决