无忧启动论坛

 找回密码
 注册
搜索

确定当前pe 对应的 boot.wim 位置,基本解决

查看数: 11455 | 评论数: 155 | 收藏 4
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-2 19:08

正文摘要:

本帖最后由 dos时代菜鸟 于 2022-11-7 08:28 编辑 如题,有啥办法能 获取到 当前 pe 是启动的 哪个位置的 哪一个 boot.wim ? 弄了个 pecmd 的脚本,用 pecmd.exe load 这个脚本,在pe下就能获取 到了,当然 ...

回复

雨魔yumo 发表于 2023-4-16 08:31:16
#在这里快速回非常需要,感谢复#
凯恩 发表于 2022-12-24 14:41:44
这个工个真好,谢谢
nanqingxu 发表于 2022-11-27 14:38:58
正好需要下载来看看
泮安宁 发表于 2022-11-20 21:18:56
dos时代菜鸟 发表于 2022-11-20 20:59
这个 是可以的,关键是,你用这个 不就是要 进入脚本,获取脚本 得出的结论么?
脚本里面 都有引用的。 ...

谢谢,脚本我下载看了,已经实现了,因为我的pe和外置单独在一个隐藏分区中,所以不想给这个分区分配盘符,用上述路径可以配合pecmd挂载隐藏分区的外置,就不用分配盘符了
dos时代菜鸟 发表于 2022-11-20 20:59:50
泮安宁 发表于 2022-11-20 15:32
最后返回的路径里可不可以多加一项,在第几块硬盘的第几个分区,“\\?\Harddisk0Partition1”这种路径

这个 是可以的,关键是,你用这个 不就是要 进入脚本,获取脚本 得出的结论么?
脚本里面 都有引用的。显示在 窗口 很简单。

点评

谢谢,脚本我下载看了,已经实现了,因为我的pe和外置单独在一个隐藏分区中,所以不想给这个分区分配盘符,用上述路径可以配合pecmd挂载隐藏分区的外置,就不用分配盘符了  详情 回复 发表于 2022-11-20 21:18
泮安宁 发表于 2022-11-20 15:32:57
dos时代菜鸟 发表于 2022-11-20 13:24
可以,而且可以给分配盘符,
前提是 用 bcd 启动的,在注册表中 有 记录。

最后返回的路径里可不可以多加一项,在第几块硬盘的第几个分区,“\\?\Harddisk0Partition1”这种路径

点评

这个 是可以的,关键是,你用这个 不就是要 进入脚本,获取脚本 得出的结论么? 脚本里面 都有引用的。显示在 窗口 很简单。  详情 回复 发表于 2022-11-20 20:59
dos时代菜鸟 发表于 2022-11-20 13:24:40
泮安宁 发表于 2022-11-20 11:19
如果wim是在隐藏分区被启动的,不分配盘符的话,还能找出wim的位置吗

可以,而且可以给分配盘符,
前提是 用 bcd 启动的,在注册表中 有 记录。

点评

最后返回的路径里可不可以多加一项,在第几块硬盘的第几个分区,“\\?\Harddisk0Partition1”这种路径  详情 回复 发表于 2022-11-20 15:32
泮安宁 发表于 2022-11-20 11:19:10
如果wim是在隐藏分区被启动的,不分配盘符的话,还能找出wim的位置吗

点评

可以,而且可以给分配盘符, 前提是 用 bcd 启动的,在注册表中 有 记录。  详情 回复 发表于 2022-11-20 13:24
dos时代菜鸟 发表于 2022-11-10 08:11:08
D_M_GuYing 发表于 2022-11-10 07:21
我搜索光驱部分用的是FORM

       ifex '%&type1%'='cdrom',

我是用 part 找出 有盘符的光驱,也没几个,逐个判断下,效率上也不耽误。
D_M_GuYing 发表于 2022-11-10 07:21:19
我搜索光驱部分用的是FORM

       ifex '%&type1%'='cdrom',
        {  
            FORX \Setup\安装WinPE.CMD,STPATH,0,
            {
                FDRV wzDrive=%STPATH%
                FORM DriveType=%wzDrive%
                FIND $%DriveType%=DRIVE_CDROM,ENVI wzPath=%wzDrive%WEPE\WEPE.INI
            }
        }

点评

我是用 part 找出 有盘符的光驱,也没几个,逐个判断下,效率上也不耽误。  详情 回复 发表于 2022-11-10 08:11
D_M_GuYing 发表于 2022-11-9 14:59:58
dos时代菜鸟 发表于 2022-11-9 14:37
你这个就是取第一个空间盘符分配的
                    fdrv -idlec &drvs=*:
                    ms ...

哦,那我这个是用对了??
那就好
dos时代菜鸟 发表于 2022-11-9 14:37:17
D_M_GuYing 发表于 2022-11-9 13:24
很能感觉到你的心情,虽然一通儿的折腾,又被我凭空添了些不必要的麻烦,但最后解决或者解惑了,心情大好 ...

你这个就是取第一个空间盘符分配的
                    fdrv -idlec &drvs=*:
                    mstr &drvx=<1>%&drvs%
                    DISK %&drvx%,%&disk%,%&part%,1


如果是下面这个,就是用最后一个空闲盘符
                    fdrv -idlec &drvs=*:
                    mstr &drvx=<-1>%&drvs%
                   DISK %&drvx%,%&disk%,%&part%,1

紫色部分
                   DISK %&drvx%,%&disk%,%&part%,1
  DISK [变量名],硬盘号,分区号                                                               ┃
┃    │    │※"硬盘号"不为空值,"分区号"也不为空值时,根据"变量名"的格式按以下三种情况处理:            ┃
┃    │5.1 │  DISK   ,硬盘号,分区号                                                                     ┃
┃    │    │  1、"变量名"为空值时,则卸载该硬盘分区分配的盘符卷,见示例7;                              ┃
┃    │5.2 │  DISK 盘符卷,硬盘号,分区号,[功能号]                                                        ┃
┃    │    │  2、"变量名"为盘符卷时(如 E: 或 E:\),为硬盘分区分配指定的盘符卷,"功能号"省略或为0时,若为┃
┃    │    │  隐藏分区则不分配盘符卷,"功能号"为非0时不管是否为隐藏分区均分配盘符卷,见示例8;          ┃
┃    │5.3 │  DISK 变量名,硬盘号,分区号                                                                 ┃
┃    │    │  3、"变量名"不为空值,且不符合盘符形式时,将该分区的盘符赋值给指定的"变量名",见示例

点评

哦,那我这个是用对了?? 那就好  详情 回复 发表于 2022-11-9 14:59
D_M_GuYing 发表于 2022-11-9 13:24:09
dos时代菜鸟 发表于 2022-11-9 12:39
没关系,从来也没怪你呀。哈哈哈。

很能感觉到你的心情,虽然一通儿的折腾,又被我凭空添了些不必要的麻烦,但最后解决或者解惑了,心情大好,跟喝了一壶老酒似的,,,

再最后麻烦一件事儿,我PECMD.INI中的红色部分,主要是我想要分配第一个可用盘符,但你的脚本分配的是最后一个可用盘符,不知道我这么改是否严谨,好象之前你说过,这个命令分配盘符,在有些特殊情况下,有点不靠谱。


我不是学这个专业的,PECMD.EXE全靠自己看着帮助慢慢的学,这阵儿子跟你学到了很多,再次感谢!!

_SUB FINDFZ
    REGI .HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&sso
    forx * %&sso% ,&p0,
    {
        envi &&item0=
        mstr &&item0=0,7,%&p0%
        Find $"%&item0%"="RDPATH=" ,
        {
            mstr &p0=8,0,%&p0%            
            mstr -delims:\ value1=<1>%&p0%
        }
    }
    Find $"%value1%"<>"",
    {
        sed *ni &str2=0,[()0123456789], ,%value1%
        mstr &type1=<3>%&str2%%
        ifex '%&type1%'='cdrom',
        {  
            FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
            ENVI wzPath=%STPATH%\WEPE\WEPE.INI
        }!
        {  
            part -drv list volume  \ArcName\%value1%,&part_info
            ifex '%&part_info%'<>'',
            {  
                mstr &disk,&part,<r=<2><3><8>%&part_info%
                ENVI wzPath=%<r%\WEPE\WEPE.INI
                Find $"%<r%"="",
                {  
                    fdrv -idlec &drvs=*:
                    mstr &drvx=<1>%&drvs%
                    DISK %&drvx%,%&disk%,%&part%,1
                    ENVI wzPath=%&drvx%\WEPE\WEPE.INI
                }   
            }!
            {
                fdrv &drvs01=*
                sed &drvs1=0,[ ],,%&drvs01%
                show -check -1:-1,1
                fdrv &drvs2=*
                sed &drvs2=0,[%&drvs1%],,%&drvs2%
                call A_ltr
                forx * %RD% %FD%,&drvx1,
                {
                    ifex "%&drvx1%WEPE\WEPE.INI",
                    {
                        envi wzPath=%&drvx1%WEPE\WEPE.INI
                        sed &drvs2=0,[%&drvx1%],,%&drvs2%
                        exit forx
                    }
                }
                forx * %&drvs2%,&drvx1,subj -%&drvx1%:
                }
            }
        }
    }
_END

点评

你这个就是取第一个空间盘符分配的 fdrv -idlec &drvs=*: mstr &drvx=%&drvs% DISK %&drvx%,%&disk%,%&part%,1 如果是下面这个,就是用最后一  详情 回复 发表于 2022-11-9 14:37
dos时代菜鸟 发表于 2022-11-9 12:39:24
D_M_GuYing 发表于 2022-11-9 12:35
十分对不起,是我自己不够严谨,看在我一顿折腾的份上,原谅我吧
这回,好像咱们俩都不用再折腾了,基本上 ...

没关系,从来也没怪你呀。哈哈哈。

点评

很能感觉到你的心情,虽然一通儿的折腾,又让我凭空添了些不必要的麻烦,但最后解决或者解惑了,心情大好,跟喝了一壶老酒似的,,, 再最后麻烦一件事儿,我PECMD.INI中的红色部分,主要是我想要分配第一个可用  详情 回复 发表于 2022-11-9 13:24
D_M_GuYing 发表于 2022-11-9 12:35:46
十分对不起,是我自己不够严谨,看在我一顿折腾的份上,原谅我吧
这回,好像咱们俩都不用再折腾了,基本上解决了所有问题,是我的PECMD.INI中,没有加上红色部分,SO SORRY!

                envi wzPath=%&drvx1%WEPE\WEPE.INI
                sed &drvs2=0,[%&drvx1%],,%&drvs2%
                exit forx
            }
        }
        envi mess1=%mess1%\n 卸载无需挂载的分区 [%&drvs2%]
        forx * %&drvs2%,&drvx1,subj -%&drvx1%:
    }

点评

没关系,从来也没怪你呀。哈哈哈。  详情 回复 发表于 2022-11-9 12:39
D_M_GuYing 发表于 2022-11-9 12:16:22
本帖最后由 D_M_GuYing 于 2022-11-9 12:18 编辑
dos时代菜鸟 发表于 2022-11-9 11:27
难道 show -check -1:-1,1 这个命令有延迟?导致不能获取新加载的分区盘符?
可以添加两句话试试

加入后,启动到桌面前,如图

启动到桌面后,问题依旧
dos时代菜鸟 发表于 2022-11-9 11:56:22
D_M_GuYing 发表于 2022-11-9 11:33
不知道我上次的回复有没有表达清楚,再详细说下

我的PECMD.INI,查找外置就写搜索的那一部分,全部删 ...

我是说 资源管理器里不看到那个盘符,不代表那个分区没有盘符。

fdrv drvs=*
mess [%drvs%]
看有f盘么? 有可能是 另一个权限下给分配了 f 盘符,在 show 指令一折腾,给显示出来了。

这个就不好办了。

D_M_GuYing 发表于 2022-11-9 11:33:56
dos时代菜鸟 发表于 2022-11-9 10:45
从图片看,esp 分区 是在 运行脚本前就 被挂载了的。进入脚本后,并没有挂载那个分区,自然也就不卸载了 ...

不知道我上次的回复有没有表达清楚,再详细说下

我的PECMD.INI,查找外置就写搜索的那一部分,全部删除,U启后,ESP分区,U启分区都没有分配,那就是说,PECMD.INI中,没有ESP分配的代码
加上了,再U启,就分配ESP了,当然,定位WIM所在分区的是U启分区
_SUB wz
                envi. mess1=%mess1%\n 无法解析注册表中的 boot.wim 路径,或该路径已丢失.尝试逆序轮询搜索.
                fdrv &drvs01=*
                sed &drvs1=0,[ ],,%&drvs01%
                show -check -1:-1,1
                fdrv &drvs2=*
                sed &drvs2=0,[%&drvs1%],,%&drvs2%
                envi mess1=%mess1%\n 新分配的盘符 [%&drvs2%]
               
                //按硬盘分区序列给已有盘符排序
                call A_ltr  //
                 .................................................
_END



_SUB A_ltr
......................
_END

点评

我是说 资源管理器里不看到那个盘符,不代表那个分区没有盘符。 fdrv drvs=* mess [%drvs%] 看有f盘么? 有可能是 另一个权限下给分配了 f 盘符,在 show 指令一折腾,给显示出来了。  详情 回复 发表于 2022-11-9 11:56
dos时代菜鸟 发表于 2022-11-9 11:27:47
本帖最后由 dos时代菜鸟 于 2022-11-9 11:29 编辑
D_M_GuYing 发表于 2022-11-9 11:03
这个问题我想过,也测试了,删除下面代码的时候,U启时,外置加不到,ESP,U启分区都没有分配,
加上下 ...

难道 show -check -1:-1,1 这个命令有延迟?导致不能获取新加载的分区盘符?
可以添加两句话试试

                envi. mess1=%mess1%\n 无法解析注册表中的 boot.wim 路径,或该路径已丢失.尝试逆序轮询搜索.
                fdrv &drvs01=*
                sed &drvs1=0,[ ],,%&drvs01%
                show -check -1:-1,1
                wait 1000
                fdrv &drvs2=*
                mess  手动打开我的电脑,看一下 是否有新的分区被加载了。\n[%&drvs1%] \n[%&drvs2%]

                sed &drvs2=0,[%&drvs1%],,%&drvs2%
                envi mess1=%mess1%\n 新分配的盘符 [%&drvs2%]
               
                //按硬盘分区序列给已有盘符排序
                call A_ltr
               
                envi mess1=%mess1%\n 分区盘符搜索序列 [%RD%][%FD%]
                forx * %RD% %FD%,&drvx1,

点评

加入后,启动到桌面前,如图 [attachimg]511789[/attachimg] 启动到桌面后,问题依旧  详情 回复 发表于 2022-11-9 12:16
D_M_GuYing 发表于 2022-11-9 11:03:22
dos时代菜鸟 发表于 2022-11-9 10:45
从图片看,esp 分区 是在 运行脚本前就 被挂载了的。进入脚本后,并没有挂载那个分区,自然也就不卸载了 ...

这个问题我想过,也测试了,删除下面代码的时候,U启时,外置加不到,ESP,U启分区都没有分配,
加上下面代码后,就是上一个回复的图了,所以,排除了你说的可能

{ //未获取到 路径对应的硬盘/分区/盘符 信息
                envi. mess1=%mess1%\n 无法解析注册表中的 boot.wim 路径,或该路径已丢失.尝试逆序轮询搜索.
                fdrv &drvs01=*
                sed &drvs1=0,[ ],,%&drvs01%
                show -check -1:-1,1
                fdrv &drvs2=*
                sed &drvs2=0,[%&drvs1%],,%&drvs2%
                envi mess1=%mess1%\n 新分配的盘符 [%&drvs2%]
               
                //按硬盘分区序列给已有盘符排序
                call A_ltr
               
                envi mess1=%mess1%\n 分区盘符搜索序列 [%RD%][%FD%]
                forx * %RD% %FD%,&drvx1,
                ..............................................

点评

难道 show -check -1:-1,1 这个命令有延迟?导致不能获取新加载的分区盘符? 可以添加两句话试试 envi. mess1=%mess1%\n 无法解析注册表中的 boot.wim 路径,或该路径已丢失.尝试逆序轮询搜索.  详情 回复 发表于 2022-11-9 11:27
dos时代菜鸟 发表于 2022-11-9 10:45:01
D_M_GuYing 发表于 2022-11-9 10:28
刚才忘记测试了

subj -F:

从图片看,esp 分区 是在 运行脚本前就 被挂载了的。进入脚本后,并没有挂载那个分区,自然也就不卸载了呀。

这种情况,跟脚本没啥关系了。

点评

不知道我上次的回复有没有表达清楚,再详细说下 我的PECMD.INI,查找外置就写搜索的那一部分,全部删除,U启后,ESP分区,U启分区都没有分配,那就是说,PECMD.INI中,没有ESP分配的代码 加上了,再U启,就分配E  详情 回复 发表于 2022-11-9 11:33
这个问题我想过,也测试了,删除下面代码的时候,U启时,外置加不到,ESP,U启分区都没有分配, 加上下面代码后,就是上一个回复的图了,所以,排除了你说的可能 { //未获取到 路径对应的硬盘/分区/盘符 信息  详情 回复 发表于 2022-11-9 11:03
D_M_GuYing 发表于 2022-11-9 10:28:20
dos时代菜鸟 发表于 2022-11-9 09:46
能看到 esp 分区 挂载到 哪个盘符了么?

是否在 卸载之列?

刚才忘记测试了

subj -F:
可以卸载掉

点评

从图片看,esp 分区 是在 运行脚本前就 被挂载了的。进入脚本后,并没有挂载那个分区,自然也就不卸载了呀。  详情 回复 发表于 2022-11-9 10:45
D_M_GuYing 发表于 2022-11-9 10:14:05
dos时代菜鸟 发表于 2022-11-9 09:46
能看到 esp 分区 挂载到 哪个盘符了么?

是否在 卸载之列?

给分配了F盘,ESP分区只有引导文件,WEPE文件夹已删除
U启后


dos时代菜鸟 发表于 2022-11-9 09:46:20
本帖最后由 dos时代菜鸟 于 2022-11-9 09:47 编辑
D_M_GuYing 发表于 2022-11-9 09:12
没卸载掉,我怕是我ESP分区存在 WEPE\WEPE64.wim,已经删除了整个ESP\WEP文件夹
重新U启,ESP分区还是上 ...

能看到 esp 分区 挂载到 哪个盘符了么?

是否在 卸载之列?

如果用  pecmd subj -盘符: 的方式 能否卸载掉。怀疑这个分区 有多个不同权限下分配的盘符。

点评

刚才忘记测试了 subj -F: 可以卸载掉  详情 回复 发表于 2022-11-9 10:28
给分配了F盘,ESP分区只有引导文件,WEPE文件夹已删除 U启后 [attachimg]511784[/attachimg]  详情 回复 发表于 2022-11-9 10:14
D_M_GuYing 发表于 2022-11-9 09:13:44
dos时代菜鸟 发表于 2022-11-9 08:24
有卸载环节呀,如果挂载的分区没有 目标,就再卸载掉。难道没有卸载掉?

但,定位是准确的,也没有显示MSR分区,,这已经很好了,不影响大局
D_M_GuYing 发表于 2022-11-9 09:12:19
dos时代菜鸟 发表于 2022-11-9 08:24
有卸载环节呀,如果挂载的分区没有 目标,就再卸载掉。难道没有卸载掉?

没卸载掉,我怕是我ESP分区存在 WEPE\WEPE64.wim,已经删除了整个ESP\WEP文件夹
重新U启,ESP分区还是上去了

点评

能看到 esp 分区 挂载到 哪个盘符了么?  详情 回复 发表于 2022-11-9 09:46
D_M_GuYing 发表于 2022-11-9 07:38:57
恭喜恭喜
最新版本,基本上完美了!

U启后的定位非常准确了,只有一点小遗憾,还是把没用的ESP分区给分配盘符了(ESP里已经没有.WIM)

点评

有卸载环节呀,如果挂载的分区没有 目标,就再卸载掉。难道没有卸载掉?  详情 回复 发表于 2022-11-9 08:24
D_M_GuYing 发表于 2022-11-7 19:30:43
找到了,
在搜索那里最后加个
ENVI @List7.isel=1
就选择第一个卷号了

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-11 12:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表