无忧启动论坛

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

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

    [复制链接]
16141#
发表于 2021-8-5 08:30:45 来自手机 | 只看该作者
smss 发表于 2021-8-5 08:14
M大M大帮看下
怎样同时具备2个条件就做某事


forx命令格式明显错误,少一段参数
回复

使用道具 举报

16142#
发表于 2021-8-5 18:46:37 | 只看该作者
smss 发表于 2021-8-5 08:14
M大M大帮看下
怎样同时具备2个条件就做某事

forx命令格式明显错误,少一段参数
----------------------------------------------

不好意思看错了。
搞个LOGS日志看下问题。
回复

使用道具 举报

16143#
发表于 2021-8-6 02:02:33 | 只看该作者
本帖最后由 weconty 于 2021-8-6 02:03 编辑

如何获取浏览器窗口的 PID 或 WID
%WinDir%\explorer.exe /n,%UserName%\Documents
EXEC -pid:&&PID %WinDir%\explorer.exe /n,%UserName%\Documents
%&PID% 与真实进程 ID 不匹配
FIND --wid* --class:CabinetWClass &&WID,Documents
不适用于本地化名称文档
回复

使用道具 举报

16144#
发表于 2021-8-22 01:33:48 来自手机 | 只看该作者
smss 发表于 2021-8-21 19:51
M大我想把编译后的文件复制出来应该怎样表达 膜拜
编译前
FILE  %CurDir%\shellbrd.dll=>%&PARTSEL2%\Win ...

putf适当出来
回复

使用道具 举报

16145#
发表于 2021-8-22 01:36:32 来自手机 | 只看该作者
weconty 发表于 2021-8-6 02:02
如何获取浏览器窗口的 PID 或 WID
%WinDir%\explorer.exe /n,%UserName%\Documents
EXEC -pid:&&PID %Win ...

explorer进程特殊,不一样,等m复出排查吧。
文档的标题可能是“我的文档”,不同语言应该都不同

点评

换个地方继续提问 还是那个老问题,版主你说的太抽象,我也太愚钝,试了n次,看了n个pecmd自带实例,翻了这个帖子好多页也没看到相关内容,请你讲解的详细点好吗?谢谢你 假设cmd代码如下: @echo off ...  详情 回复 发表于 2021-8-30 16:22
回复

使用道具 举报

16146#
发表于 2021-8-30 16:22:58 | 只看该作者
红毛樱木 发表于 2021-8-22 01:36
explorer进程特殊,不一样,等m复出排查吧。
文档的标题可能是“我的文档”,不同语言应该都不同

换个地方继续提问

还是那个老问题,版主你说的太抽象,我也太愚钝,试了n次,看了n个pecmd自带实例,翻了这个帖子好多页也没看到相关内容,请你讲解的详细点好吗?谢谢你

假设cmd代码如下:

@echo off
.........
pecmd.exe mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够!\n建议安装PE到此分区!\n\n按是开始安装,按否请手工指定安装位置!@警告!#YN

if "%YESNO%" == "YES" (call :a) else call :b

..................

这个例子中,怎么修改批处理中才能得到%YESNO%的值?
回复

使用道具 举报

16147#
发表于 2021-8-31 13:11:16 | 只看该作者
wjgyz740526 发表于 2021-8-30 16:22
换个地方继续提问

还是那个老问题,版主你说的太抽象,我也太愚钝,试了n次,看了n个pecmd自带实例, ...
  1. PECMD原始_cli.EXE EXIT= 2
  2. echo %ERRORLEVEL%
复制代码


  1. PECMD原始_cli.EXE WRIT --,,这是信息
复制代码



你的%YESNO%是PECMD变量,和系统变量无关

点评

首先,谢谢你的回复 试了下,代码如下: PECMD_cli.EXE EXIT= 2 echo %ERRORLEVEL% PECMD_cli WRIT --,,程序开始... pecmd_cli MESS= 确定安装吗?@警告!#YN echo %ERRORLEVEL%++%YESNO% PAUSE 代码  详情 回复 发表于 2021-8-31 15:32
回复

使用道具 举报

16148#
发表于 2021-8-31 15:32:29 | 只看该作者
红毛樱木 发表于 2021-8-31 13:11
你的%YESNO%是PECMD变量,和系统变量无关

首先,谢谢你的回复

试了下,代码如下:

PECMD_cli.EXE EXIT= 2
echo %ERRORLEVEL%
PECMD_cli WRIT --,,程序开始...
pecmd_cli MESS= 确定安装吗?@警告!#YN
echo %ERRORLEVEL%++%YESNO%
PAUSE

代码跑起来之后,无论信息框选择是还是否,%ERRORLEVEL%都是0,后面的%YESNO%也确实是你说的不是系统变量,空值

我想了一个不是办法的办法,自定义窗口,自定义是否两个按钮,两个那妞分别写不同数据到文件,然后批处理判断文件内容来达到目的,感觉太啰嗦,这样还不如直接用pecmd脚本了
回复

使用道具 举报

16149#
发表于 2021-8-31 15:38:19 | 只看该作者
wjgyz740526 发表于 2021-8-31 15:32
首先,谢谢你的回复

试了下,代码如下:

你这逻辑有问题啊 。。。
你没搞清楚%ERRORLEVEL%是哪里过来的。。。。
你前面一个exe执行返回错误码2,后面又执行一个程序,这错误码又不是前面的了
回复

使用道具 举报

16150#
发表于 2021-9-1 00:16:57 | 只看该作者
本帖最后由 527104427 于 2021-9-1 00:26 编辑
wjgyz740526 发表于 2021-8-30 16:22
换个地方继续提问

还是那个老问题,版主你说的太抽象,我也太愚钝,试了n次,看了n个pecmd自带实例, ...

@echo off
.........
pecmd_cli TEAM~ mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够!\n建议安装PE到此分区!\n\n按是开始安装,按否请手工指定安装位置!@警告!#YN ~WRIT *fv -,$+0,YESNO
.................


点评

感谢五大指点,这样确实输出了正确的返回值,不过这返回值不是%YESNO%的变量值吧?我如果要判断只能把前面的用管道符号传递给find来判断?  详情 回复 发表于 2021-9-1 08:53
回复

使用道具 举报

16151#
发表于 2021-9-1 08:53:51 | 只看该作者
527104427 发表于 2021-9-1 00:16
@echo off
.........
pecmd_cli TEAM~ mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够 ...

感谢五大指点,这样确实输出了正确的返回值,不过这返回值不是%YESNO%的变量值吧?我如果要判断只能把前面的用管道符号传递给find来判断?
回复

使用道具 举报

16152#
发表于 2021-9-1 11:39:14 | 只看该作者
wjgyz740526 发表于 2021-9-1 08:53
感谢五大指点,这样确实输出了正确的返回值,不过这返回值不是%YESNO%的变量值吧?我如果要判断只能把前 ...

这个输出跟其它命令行程序是一样的啊,CMD中捕获输出,再设置成变量。我批处理不熟,不知道怎样捕获,或许可以用for试试
回复

使用道具 举报

16153#
发表于 2021-9-1 11:43:04 | 只看该作者
wjgyz740526 发表于 2021-9-1 08:53
感谢五大指点,这样确实输出了正确的返回值,不过这返回值不是%YESNO%的变量值吧?我如果要判断只能把前 ...

试了一下,这样可以:
@echo off
for /f "tokens=*" %%i in ('"PECMD原始_cli TEAM~ mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够!\n建议安装PE到此分区!\n\n按是开始安装,按否请手工指定安装位置!@警告!#YN ~WRIT *fv -,$+0,YESNO"') do set "YESNO=%%i"
echo "%YESNO%"
pause









点评

借楼请教5大: 知道进程名,向窗口发送一组按键,怎么做?  详情 回复 发表于 2021-9-10 17:55
谢谢回复! 我是这么做的 pecmd_cli TEAM~ mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够!\n建议安装PE到此分区!\n\n按是开始安装,按否请手工指定安装位置!@警告!#YN *5000 $Y ~WRIT *f  详情 回复 发表于 2021-9-1 16:16
回复

使用道具 举报

16154#
发表于 2021-9-1 16:16:00 | 只看该作者
本帖最后由 wjgyz740526 于 2021-9-1 16:17 编辑
527104427 发表于 2021-9-1 11:43
试了一下,这样可以:
@echo off
for /f "tokens=*" %%i in ('"PECMD原始_cli TEAM~ mess= 当前系统引 ...

谢谢回复!

我是这么做的

pecmd_cli TEAM~ mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够!\n建议安装PE到此分区!\n\n按是开始安装,按否请手工指定安装位置!@警告!#YN *5000 $Y ~WRIT *fv -,$+0,YESNO |find /i "yes"

if %ERRORLEVEL% EQU 0 (ECHO 开始安装) else ECHO 请输入自定义分区:

pause&exit
回复

使用道具 举报

16155#
发表于 2021-9-2 09:05:35 | 只看该作者
不得不吐槽下,pecmd的帮助太简单了,sed怎么看也不会用,现在从3000页(手机端)向后翻
回复

使用道具 举报

16156#
发表于 2021-9-3 11:49:27 | 只看该作者
惭愧,遇到新问题,继续求教

_SUB Windows1,W370H200,,,,0
LABE Label1,L90T35W300H70,安装Windows PE 维护平台...\n\n\n请指定要安装的目标分区:      盘
IMAG Image1,L18T37W60H60,C:\Windows\system32\shell32.dll#40
LIST List1,L230T68W35H32,G:|C:|D:|E:,,  
ITEM Button1,L150T120W90H30,取消,TEAM MESS= 程序即将关闭@确定#OK*3000 | KILL \%Windows1%,,
ITEM Button2,L255T120W90H30,确定,TEAM mess= 你选择了安装到 %List1% 盘! #ok *3000 | WRIT D:\PE安装\y.txt,1,%List1% | KILL \%Windows1%,,
_END
CALL @Windows1
红色这一句,很奇怪,总是不能写%List1%到D:\PE安装\y.txt,MESS正常,后面的kill也关不掉窗口,这代码单独执行都没问题


恳请指教,谢谢
回复

使用道具 举报

16157#
发表于 2021-9-3 13:10:14 来自手机 | 只看该作者
wjgyz740526 发表于 2021-9-3 11:49
惭愧,遇到新问题,继续求教

_SUB Windows1,W370H200,,,,0

命令写到一个_sub函数里call,这里有逗号,格式冲突

点评

谢谢红大 我改成这样,窗口正常了,写入数据还是不正常? Windows1 _SUB Windows1,W370H200,,//MESS 程序即将关闭@确定#OK,,0 LABE Label1,L90T35W300H70,安装Windows PE 维护平台...\n\n\n请指定要安装的  详情 回复 发表于 2021-9-3 17:48
回复

使用道具 举报

16158#
发表于 2021-9-3 17:48:49 | 只看该作者
本帖最后由 wjgyz740526 于 2021-9-3 17:54 编辑
红毛樱木 发表于 2021-9-3 13:10
命令写到一个_sub函数里call,这里有逗号,格式冲突

谢谢红大

我改成这样,窗口正常了,写入数据还是不正常?

Windows1
_SUB Windows1,W370H200,,//MESS 程序即将关闭@确定#OK,,0
LABE Label1,L90T35W300H70,安装Windows PE 维护平台...\n\n\n请指定要安装的目标分区:      盘
IMAG Image1,L18T37W60H60,C:\Windows\system32\shell32.dll#40
LIST List1,L230T68W35H32,C|D|E|F,,  
ITEM Button1,L150T120W90H30,取消,TEAM MESS= 程序即将关闭@确定#OK*3000 | KILL \%Windows1%,,
ITEM Button2,L255T120W90H30,确定,call y
_END

_SUB y
MESS= 你选择将PE安装到%List1%,按确定之后开始安装! @确定#OK*3000
WRIT D:\PE安装\y.txt,1,%List1%
KILL \%Windows1%
_END
程序跑起来之后,写入到:\PE安装\y.txt的应该是选择的项,%List1%的值,但是,写的是%List1%这一串字符??



求教,谢谢
回复

使用道具 举报

16159#
发表于 2021-9-3 18:19:43 | 只看该作者
本帖最后由 红毛樱木 于 2021-9-3 18:22 编辑
wjgyz740526 发表于 2021-9-3 17:48
谢谢红大

我改成这样,窗口正常了,写入数据还是不正常?

没仔细看说明书吧。
修改位置: 前导"$"表示将"文件数据"内的变量展开;
WRIT D:\PE安装\y.txt,$1,%List1%

点评

汗,看到了这个,理解错了 谢谢你!  详情 回复 发表于 2021-9-3 19:21
回复

使用道具 举报

16160#
发表于 2021-9-3 19:21:15 来自手机 | 只看该作者
红毛樱木 发表于 2021-9-3 18:19
没仔细看说明书吧。
修改位置: 前导"$"表示将"文件数据"内的变量展开;
WRIT D:\PE安装\y.txt,$1,%List ...

汗,看到了这个,理解错了

谢谢你!
回复

使用道具 举报

16161#
发表于 2021-9-6 16:23:10 | 只看该作者
有人反映更换新版pecmd以后影响了无线的安装,同样代码,换回老版本PECMD没有问题。驱动是CAB包
回复

使用道具 举报

16162#
发表于 2021-9-10 17:55:38 | 只看该作者
527104427 发表于 2021-9-1 11:43
试了一下,这样可以:
@echo off
for /f "tokens=*" %%i in ('"PECMD原始_cli TEAM~ mess= 当前系统引 ...

借楼请教5大:
知道进程名,向窗口发送一组按键,怎么做?
回复

使用道具 举报

16163#
发表于 2021-9-10 18:07:14 | 只看该作者
feiyike 发表于 2021-9-10 17:55
借楼请教5大:
知道进程名,向窗口发送一组按键,怎么做?

ENVI @窗口和控件名.POSTMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //异步发送消息
ENVI @窗口和控件名.SENDMSG=[:变量名;]消息号[;参数wPrm[;参数lPrm]]     //同步发送消息
ENVI @@POSTMSG=[:变量名;]窗口号;消息号[;参数wPrm[;参数lPrm]]          //异步发送消息
ENVI @@SENDMSG=[:变量名;]窗口号;消息号[;参数wPrm[;参数lPrm]]          //同步发送消息


----------------------------------------------------------------------
ENVI @@POSTMSG=1183014;0x0100;0x4E;
ENVI @@POSTMSG=1183014;0x0101;0x4E;
-----------------------------------------------------------------

WM_KEYDOWN
0x0100
按下一个非系统键(按下键时未按下“ALT”键)
WM_KEYUP
0x0101
释放一个非系统键

回复

使用道具 举报

16164#
发表于 2021-11-7 12:45:16 | 只看该作者
赞一个!
回复

使用道具 举报

16165#
发表于 2021-11-12 12:25:27 | 只看该作者
M大偷偷地更新了?
回复

使用道具 举报

16166#
发表于 2021-11-12 12:52:02 | 只看该作者
M大,我发现用指令 PART -devidx 获取不到NvME硬盘和IDE硬盘的序列号,指令如下:
  1.         PART list disk,&AllDISK_TEST
  2.         FORX * %&AllDISK_TEST%,&DiskNum_TEST,
  3.         {*
  4.                 PART -devidx list disk %&DiskNum_TEST%,&DiskInf_TEST
  5.                 MESS %&DiskInf_TEST%                //媒体类型        总线类型        硬盘型号        硬盘序列号
  6.         }
复制代码

是我的用法不对,还是PECMD需要添加相应的支持?

点评

我测试IDE可以,NVME不行  发表于 2021-11-12 19:49
回复

使用道具 举报

16167#
发表于 2021-11-12 16:32:29 | 只看该作者
我也有个问题,譬如我从系统中提取的驱动,多数是多个驱动共用一个cat,一般放上一级目录,在inf中就指明如:CatalogFile=..\Wireless.cat,放CAB包中安装时没有任何问题,如果放7z中,只按需解压相应目录则根目录下的cat会如何处理,是不是会造成安装失败
回复

使用道具 举报

16168#
发表于 2021-11-12 16:41:33 | 只看该作者
本帖最后由 Anson4 于 2021-11-12 17:21 编辑

再请教M大几个问题:
1. 最新版本的PECMD支不支持7z压缩包的解压缩?
就是类似于解压缩CAB压缩包的操作:DEVI *extract "%Windir%\Temp\ImDisk.cab",,%Windir%\Temp\ImDisk\
2. PECMD内置的ImDisk(就是那个#29号InData资源)可否自行定制?
我的设想是这样的:先自行定制这个内置包,然后在需要的时候通过某个指令触发其进行安装。
之所以有这个想法,是因为PECMD触发的ImDisk安装是静默而且无出错提示的,而我自行用 rundll32.exe setupapi.dll,InstallHinfSection 来进行安装时,是会出现一个出错确认对话框的(此时已经安装成功)。
3. PECMD支持压缩CAB和7z压缩包吗?
4. PECMD用什么指令压缩VHD/VHDX?

点评

DEVI *extract 支持Cab 其它 请用第3方程序(7z)  详情 回复 发表于 2021-11-12 22:35
回复

使用道具 举报

16169#
发表于 2021-11-12 19:51:15 | 只看该作者
hhh333 发表于 2021-11-12 16:32
我也有个问题,譬如我从系统中提取的驱动,多数是多个驱动共用一个cat,一般放上一级目录,在inf中就指明如 ...

这种估计不会解压,只解压当前目录,上级目录如果还管的话代码量太大了。
其实你每个INF所在地目录放一起,打包7z到时候也不会增加任何体积的。
回复

使用道具 举报

16170#
 楼主| 发表于 2021-11-12 22:30:03 | 只看该作者
ghosblue 发表于 2021-7-17 03:33
MOUN-udm   -udmid:9    \\.\PhysicalDrive* f 挂载的驱动器是只读的,如何改成读写的?

-w
可写
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2026-1-23 05:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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