无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1243|回复: 25
打印 上一主题 下一主题

[已解决] 利用PECMD指定U盘盘符的问题

[复制链接]
跳转到指定楼层
1#
发表于 2025-3-6 12:50:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 青青草 于 2025-3-7 14:46 编辑

      在WINPE中,如何利用PECMD给含有文件夹SystemISO的U盘某分区指定盘符为Z?(只考虑单个U盘情况。)
如果知道含有文件夹SystemISO的U盘分区编号,比如,3,
  SUBJ Z:\
  SUBJ %CurDrv%
  SHOW U:3,Z
即可解决。
如果只知道U盘某分区含有文件夹SystemISO呢?
DeepSeek的回答是:
      FORX @\Drives,Drive,1,IFEX %Drive%\SystemISO,!! SUBJ %Drive%,Z:
运行结果不如意。
应如何书写呢?
望高手赐教!
谢谢!


2#
发表于 2025-3-6 13:08:47 来自手机 | 只看该作者
多个U盘有此文件夹,还是Z已被占用?

点评

只考虑单个U盘情况。  详情 回复 发表于 2025-3-6 13:26
回复

使用道具 举报

3#
 楼主| 发表于 2025-3-6 13:26:45 | 只看该作者
szwp 发表于 2025-3-6 13:08
多个U盘有此文件夹,还是Z已被占用?

只考虑单个U盘情况。
回复

使用道具 举报

4#
发表于 2025-3-6 15:08:37 | 只看该作者
学习,谢谢各位。
回复

使用道具 举报

5#
发表于 2025-3-6 15:54:19 | 只看该作者
感谢楼主分享
回复

使用道具 举报

6#
发表于 2025-3-6 16:08:04 | 只看该作者
学习,谢谢各位。
回复

使用道具 举报

7#
 楼主| 发表于 2025-3-7 11:06:47 | 只看该作者
哪位大神解答一下?
回复

使用道具 举报

8#
发表于 2025-3-7 12:04:56 | 只看该作者
感谢楼主分享
回复

使用道具 举报

9#
发表于 2025-3-7 12:19:38 | 只看该作者
只需考虑分区有盘符的情况的话:
forx @\SystemISO,Drive,1,team mstr Drive=1,3,%Drive% | subj Z: | subj Z:,%Drive%

点评

如果分区没有盘符,又该如何书写? 谢谢!  详情 回复 发表于 4 天前
谢谢!  详情 回复 发表于 2025-3-7 12:43
回复

使用道具 举报

10#
 楼主| 发表于 2025-3-7 12:43:51 | 只看该作者
hua_wuxin 发表于 2025-3-7 12:19
只需考虑分区有盘符的情况的话:
forx @\SystemISO,Drive,1,team mstr Drive=1,3,%Drive% | subj Z: | sub ...

谢谢!
回复

使用道具 举报

11#
发表于 2025-3-7 13:34:04 | 只看该作者

感谢楼主分享
回复

使用道具 举报

12#
发表于 2025-3-7 14:06:25 | 只看该作者
感谢分享
回复

使用道具 举报

13#
发表于 2025-3-7 17:19:25 | 只看该作者


感谢楼主分享
回复

使用道具 举报

14#
 楼主| 发表于 4 天前 | 只看该作者
hua_wuxin 发表于 2025-3-7 12:19
只需考虑分区有盘符的情况的话:
forx @\SystemISO,Drive,1,team mstr Drive=1,3,%Drive% | subj Z: | sub ...

如果分区没有盘符,又该如何书写?
谢谢!

点评

我也是半桶水 没什么好办法  详情 回复 发表于 4 天前
回复

使用道具 举报

15#
发表于 4 天前 | 只看该作者
青青草 发表于 2025-4-17 07:06
如果分区没有盘符,又该如何书写?
谢谢!

我也是半桶水 没什么好办法
回复

使用道具 举报

16#
发表于 4 天前 | 只看该作者
本帖最后由 527104427 于 2025-4-17 12:01 编辑

pecmd要用最新的,否则没这功能。

#code=936T950
set^ EnviMode=1
set^ ForceLocal=1
call FindSystemISO Z:
exit

_sub FindSystemISO
        part list disk ,DiskList
        forx *v DiskList,DiskNum,
        {
                call $--qd --ret:h Kernel32.dll,CreateFileW,$\\.\PhysicalDrive%DiskNum%,#2147483648,#3,#0,#3,#128,#0
                ifex $%h%<>-1,
                {
                        set nInBufferSize=0xC
                        set$# lpInBuffer=*%nInBufferSize% 0
                        calc nOutBufferSize=0x28 + 1K
                        set$# lpOutBuffer=*%nOutBufferSize% 0
                        set$# lpBytesReturned=*%ptrlen% 0
                        call $--qd --ret:RetDeviceIoControl Kernel32.dll,DeviceIoControl,#%h%,#2954240,*lpInBuffer,#%nInBufferSize%,*lpOutBuffer,#%nOutBufferSize%,*lpBytesReturned,#0
                        call $--qd --bool --ret:RetCloseHandle Kernel32.dll,CloseHandle,#%h%
                        ifex $[ %RetDeviceIoControl%<>0 & ( %lpOutBuffer?char:10%=1 | %lpOutBuffer?long:28%=7 ) ],
                        {
                                part list part %DiskNum%,PartNumList
                                sed -ex PartNumList=0,[-@=]\z(\b+)*,,PartNumList
                                forx *v PartNumList,PartNum,
                                {
                                        ifex \\.\GLOBALROOT\device\Harddisk%DiskNum%\Partition%PartNum%\SystemISO\,
                                        {
                                                set tmpdrv=%~1
                                                find *=tmpdrv,
                                                {
                                                        fdrv -idle DrvList=*
                                                        mstr * tmpdrv=<-1>DrvList
                                                }
                                                find *<>tmpdrv,!! subj *%tmpdrv%,\Device\Harddisk%DiskNum%\Partition%PartNum%   //show * %DiskNum%:%PartNum%,%tmpdrv%   //subj *%tmpdrv%,\\?\Harddisk%DiskNum%Partition%PartNum%
                                                exit _sub
                                        }
                                }
                        }
                }
        }
_end




点评

pecmd下载了PECMD-V4.0.2011.501版,结果失败。不知何故?  详情 回复 发表于 4 天前
回复

使用道具 举报

17#
 楼主| 发表于 4 天前 | 只看该作者
527104427 发表于 2025-4-17 11:20
pecmd要用最新的,否则没这功能。

#code=936T950

pecmd下载了PECMD-V4.0.2011.501版,结果失败。不知何故?

点评

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1 https://wwi.lanzoui.com/b0wh8vjc  详情 回复 发表于 4 天前
回复

使用道具 举报

18#
发表于 4 天前 | 只看该作者
本帖最后由 527104427 于 2025-4-17 12:02 编辑
青青草 发表于 2025-4-17 11:44
pecmd下载了PECMD-V4.0.2011.501版,结果失败。不知何故?


PECMD.7z (1.83 MB, 下载次数: 5)

上面的代码重新复制一下,刚才少写了一个逗号

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1
https://wwi.lanzoui.com/b0wh8vjc





点评

已成功加载。 再请教一个问题:其中 CALL LINK[/backcolor] CALL ImDisk[/backcolor] CALL MyDisk[/backcolor] CALL ImDiskyjcd[/backcolor] 没有被执行。是什么原因?是代码错误吗?[/backcolor] 谢谢![/ba  详情 回复 发表于 4 天前
回复

使用道具 举报

19#
发表于 4 天前 | 只看该作者
感谢分享
回复

使用道具 举报

20#
 楼主| 发表于 4 天前 | 只看该作者
本帖最后由 青青草 于 2025-4-17 14:05 编辑
527104427 发表于 2025-4-17 11:58
上面的代码重新复制一下,刚才少写了一个逗号

http://bbs.wuyou.net/forum.php?mod=viewthread& ...

已成功加载。
再请教一个问题:
  1. #code=936T950
  2.     set^ EnviMode=1
  3.     set^ ForceLocal=1
  4.     call FindSystemISO Z:                 
  5.     IFEX Z:\, // 只有成功挂载Z盘才执行后续操作
  6.     {
  7.         CALL LINK
  8.         CALL ImDisk
  9.         CALL MyDisk
  10.         CALL ImDiskyjcd
  11.     }
复制代码

其中
CALL LINK
CALL ImDisk
CALL MyDisk
CALL ImDiskyjcd
没有被执行。是什么原因?是代码错误吗?
谢谢!

点评

看不出什么问题。 你可以把iso传上来看看,我帮你研究研究  详情 回复 发表于 4 天前
回复

使用道具 举报

21#
发表于 4 天前 | 只看该作者
青青草 发表于 2025-4-17 14:02
已成功加载。
再请教一个问题:
其中

看不出什么问题。
你可以把iso传上来看看,我帮你研究研究

点评

更新了Explorer++.exe后,问题解决了。再请教一个问题, 挂载失败,不知是何原因? 谢谢!  详情 回复 发表于 昨天 12:31
我是利用grub2,由Windows.ISO动态构造的pe,也就是 从Windows11.iso启动PE。  详情 回复 发表于 4 天前
回复

使用道具 举报

22#
 楼主| 发表于 4 天前 | 只看该作者
527104427 发表于 2025-4-17 17:52
看不出什么问题。
你可以把iso传上来看看,我帮你研究研究

我是利用grub2,由Windows.ISO动态构造的pe,也就是 从Windows11.iso启动PE。
回复

使用道具 举报

23#
 楼主| 发表于 昨天 12:31 | 只看该作者

qe

本帖最后由 青青草 于 2025-4-20 15:10 编辑
527104427 发表于 2025-4-17 17:52
看不出什么问题。
你可以把iso传上来看看,我帮你研究研究

更新了Explorer++.exe后,问题解决了。再请教一个问题,
  1. MOUN -u Y:
  2. FIND $0=%&bX64%,
  3.     {
  4.         IFEX "Z:\boot\外置工具x86.iso", MOUN "Z:\boot\外置工具x86.iso",Y:,1
  5.             }!{
  6.         IFEX "Z:\boot\外置工具x64.iso",MOUN "Z:\boot\外置工具x64.iso",Y:,1
  7.     }
复制代码
挂载失败,不知是何原因?
谢谢!
无需解答了,我用
  1. FIND $0=%&bX64%,
  2.     {
  3.         EXEC =!imdisk.exe -a -f "Z:\boot\外置工具x86.iso" -m "Y:"
  4.     }!{
  5.        EXEC =!imdisk.exe -a -f "Z:\boot\外置工具x64.iso" -m "Y:"
  6.     }
复制代码
挂载成功了!



点评

pecmd有调用api的挂载方式:MOUN-VHD -iso 另外,语法上括号最好独占一行,不要几个括号挤一起。 FIND $0=%&bX64%, { //卸载 moun-vhd -u "Z:\boot\外置工具x86.iso" IFEX "Z:\boot\  详情 回复 发表于 昨天 17:19
回复

使用道具 举报

24#
发表于 昨天 17:19 | 只看该作者
青青草 发表于 2025-4-20 12:31
更新了Explorer++.exe后,问题解决了。再请教一个问题,
挂载失败,不知是何原因?
谢谢!

pecmd有调用api的挂载方式:MOUN-VHD -iso
另外,语法上括号最好独占一行,不要几个括号挤一起。

FIND $0=%&bX64%,
{
        //卸载
        moun-vhd -u "Z:\boot\外置工具x86.iso"
        IFEX "Z:\boot\外置工具x86.iso", MOUN-VHD -iso "Z:\boot\外置工具x86.iso",Y:,,&&v
}!
{
        //卸载
        moun-vhd -u "Z:\boot\外置工具x64.iso"
        IFEX "Z:\boot\外置工具x64.iso",MOUN-VHD -iso "Z:\boot\外置工具x64.iso",Y:,,&&v
}







点评

今天又发现个问题:将 外置工具x64.iso 挂载为Y盘后,运行其中的一些软件(比如,"Y:\网络工具\Chrome\App\chrome.exe", 无反应),用人工把 Y:\网络工具 复制到其它盘(比如,D:\),再运行 D:\网络工具\Chrome\A  详情 回复 发表于 2 小时前
谢谢!  详情 回复 发表于 昨天 17:56
回复

使用道具 举报

25#
 楼主| 发表于 昨天 17:56 | 只看该作者
527104427 发表于 2025-4-20 17:19
pecmd有调用api的挂载方式:MOUN-VHD -iso
另外,语法上括号最好独占一行,不要几个括号挤一起。

谢谢!
回复

使用道具 举报

26#
 楼主| 发表于 2 小时前 | 只看该作者
本帖最后由 青青草 于 2025-4-21 16:02 编辑
527104427 发表于 2025-4-20 17:19
pecmd有调用api的挂载方式:MOUN-VHD -iso
另外,语法上括号最好独占一行,不要几个括号挤一起。

今天又发现个问题:将 外置工具x64.iso 挂载为Y盘后,运行其中的一些软件(比如,"Y:\网络工具\Chrome\App\chrome.exe", 无反应),用人工把  Y:\网络工具 复制到其它盘(比如,D:\),再运行 D:\网络工具\Chrome\App\chrome.exe" 则成功。
请教大神,如果不复制到其它盘,有何解决办法?
谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-4-21 16:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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