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

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

   火... [复制链接]
发表于 2019-7-11 23:51:42 | 显示全部楼层
datbik189 发表于 2019-7-11 17:54
logs --2 * xx.log
envi^ envimode=1
call @cmd_win

感觉这样不是真的 留有 一个diskpart 进程,diskpart 会随着call b.bat 而被多次调用。

可以探测下 diskpart 的进程号,是在变化的。

之所以再次运行 快了,是因为 diskpart 运行过一次,第二次就会快一些。

点评

感觉这样调用最好, 因为你不知道diskpart运行每一条命令所需的时间. exec* &V=*diskpart.exe /s script.txt 获取回显是在diskpart 运行结束之后. 查看了一下论坛以前的记录, 向挂起的diskpart.exe发送一条命令  详情 回复 发表于 2019-7-17 10:51
回复

使用道具 举报

发表于 2019-7-12 00:16:10 来自手机 | 显示全部楼层
dos时代菜鸟 发表于 2019-7-11 10:58
pecmd 有办法 向 某个进程传递指令么?
比如


是不是可以通过窗口消息发送字符串信息给diskpart窗口,不知道这样行不行

点评

我最初就是这个想法,但是不知道怎么实现。 不知道pecmd 能不能 通过 dpi 精准找到 diskpart 的窗口,并发送字符串。 是不是还要用到 系统 api dll 啥的?这个我就更不明白了。  详情 回复 发表于 2019-7-12 08:19
回复

使用道具 举报

发表于 2019-7-12 08:19:40 | 显示全部楼层
红毛樱木 发表于 2019-7-12 00:16
是不是可以通过窗口消息发送字符串信息给diskpart窗口,不知道这样行不行

我最初就是这个想法,但是不知道怎么实现。
不知道pecmd 能不能 通过 dpi 精准找到 diskpart 的窗口,并发送字符串。

是不是还要用到 系统 api dll 啥的?这个我就更不明白了。
回复

使用道具 举报

发表于 2019-7-14 21:32:04 | 显示全部楼层
+111111111111111回帖是一种美德
回复

使用道具 举报

发表于 2019-7-15 23:00:18 | 显示全部楼层
4K扇区原生磁盘,无法用PECMD2012的PART命令来操作分区了。
用其中的-CHS指定参数也不行。
回复

使用道具 举报

发表于 2019-7-17 10:47:25 | 显示全部楼层
本帖最后由 datbik189 于 2019-7-17 10:50 编辑

重复了...
回复

使用道具 举报

发表于 2019-7-17 10:51:26 | 显示全部楼层
本帖最后由 datbik189 于 2019-7-17 11:25 编辑
dos时代菜鸟 发表于 2019-7-11 23:51
感觉这样不是真的 留有 一个diskpart 进程,diskpart 会随着call b.bat 而被多次调用。

可以探测下 di ...


感觉这样调用最好, 因为你不知道diskpart运行每一条命令所需的时间.

exec* &V=*diskpart.exe /s script.txt 获取回显是在diskpart 运行结束之后.

查看了一下论坛以前的记录, 向挂起的diskpart.exe发送一条命令的脚本为:

ENVI @@SENDMSG=窗口ID号;0x102;宽字符(16进制)

测试脚本通过,没问题.

先运行sel disk 0 和 运行 list partition

11.jpg

后运行 list volume

12.jpg

logs --2 * xx.log
envi^ envimode=1
thread -here -tid:&A call @cmd_win
_Sub cmd_win,h280 w400 ,cmd,kill *%cmdpid%
      edit-| cmd_edit, L10 t10 h180 w380,,,0x220
      item cmd_but,  L20 t200 h20 w50,cmd,exec* -io -pid:cmdpid @cmd_edit=*diskpart
_end
loop #1=1,find diskpart.exe,exit loop!wait 500
wait 1000
set &V1=%cmdpid%
find --wid*@. &V
load #999*命令_find.exe &V 匹配 &V1
team mstr * &wid=<2>&V|calc -base=16 &wid=%&wid%
set. &ch=sel disk 0\nlist partition\n
load #999*命令_宽字符 &ch
forx * %&ch%,&v1,ENVI @@SENDMSG=%&WID%;0x102;0x%&V1%
wait 500
mess. %cmd_edit%
set. &ch=list volume\n
load #999*命令_宽字符 &ch
forx * %&ch%,&v1,ENVI @@SENDMSG=%&WID%;0x102;0x%&V1%
wait 50
mess. %cmd_edit%
wait *=%&A%

PECMD.EXE

1.01 MB, 下载次数: 17

点评

这个好。必须学会。  详情 回复 发表于 2019-7-17 12:12
牛!还能这么玩的啊,学习了。  详情 回复 发表于 2019-7-17 12:01
回复

使用道具 举报

发表于 2019-7-17 12:01:36 | 显示全部楼层
datbik189 发表于 2019-7-17 10:51
感觉这样调用最好, 因为你不知道diskpart运行每一条命令所需的时间.

exec* &V=*diskpart.exe /s scr ...

牛!还能这么玩的啊,学习了。

点评

汗,这是M大很早以前给出的示范脚本,我只搬运工  详情 回复 发表于 2019-7-17 12:47
回复

使用道具 举报

发表于 2019-7-17 12:12:56 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-7-17 12:34 编辑
datbik189 发表于 2019-7-17 10:51
感觉这样调用最好, 因为你不知道diskpart运行每一条命令所需的时间.

exec* &V=*diskpart.exe /s scr ...


这个好。必须学会。

load #999*命令_宽字符 &ch
这个命令 怎么来的?

点评

看了一下,这个方法就是挨个把字母转换成按键编码,再挨个发送给diskpart 前提是得把所有英文字母的十六进制通过手工查询出来,再保存到文件,以供脚本查询,并不是直接发送字符串。 但有几个问题需要解决: 1.  详情 回复 发表于 2019-7-17 18:36
自己写的命令块,参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414172  详情 回复 发表于 2019-7-17 12:37
回复

使用道具 举报

发表于 2019-7-17 12:37:53 来自手机 | 显示全部楼层
本帖最后由 datbik189 于 2019-7-17 12:41 编辑
dos时代菜鸟 发表于 2019-7-17 12:12
这个好。必须学会。

load #999*命令_宽字符 &ch


附件中的PECMD中的命令块,内置在ScriPt下序号999
参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414172
回复

使用道具 举报

发表于 2019-7-17 12:47:48 来自手机 | 显示全部楼层
527104427 发表于 2019-7-17 12:01
牛!还能这么玩的啊,学习了。


汗,这是M大很早以前给出的示范脚本,我只是搬运工
回复

使用道具 举报

发表于 2019-7-17 18:36:14 | 显示全部楼层
dos时代菜鸟 发表于 2019-7-17 12:12
这个好。必须学会。

load #999*命令_宽字符 &ch

看了一下,这个方法就是挨个把字母转换成按键编码,再挨个发送给diskpart
前提是得把所有英文字母的十六进制通过手工查询出来,再保存到文件,以供脚本查询,并不是直接发送字符串。

但有几个问题需要解决:
1.此方法只适用于win7以上的系统,win7没办法保留diskpart窗口,运行就直接退出了
2.不捕获输出的话,倒是可以保留diskpart窗口,而且必需开两个CMD:exec =cmd cmd /k diskpart

所以,要保证通用性,就得解决上面提到的问题,目前我觉得是无解。不过据说win7要死掉了,不支持win7貌似也说得过去。

根本就捕获不到diskpart窗口ID,如图:
2.png


点评

请教老司机:PECMD有什么指令能用来处理文本文件的字符串(查找和替换)? 我查看了帮助,WIRT 可以处理文本文件的字符串,但是只能以行为单位来处理。 我需要再CMD脚本中以指定的字符串为单位来处理,比如将“d  详情 回复 发表于 2019-7-18 09:45
手上没有WIN7,无法测试。 如果diskpart不能常驻内存,这个脚本就没有意义了。 关于字符串,支持汉字,可以直接输入,自己转化成宽字符,不需要查询按键的额外工作  详情 回复 发表于 2019-7-17 18:53
回复

使用道具 举报

发表于 2019-7-17 18:53:07 来自手机 | 显示全部楼层
527104427 发表于 2019-7-17 18:36
看了一下,这个方法就是挨个把字母转换成按键编码,再挨个发送给diskpart
前提是得把所有英文字母的十六 ...

手上没有WIN7,无法测试。

如果diskpart不能常驻内存,这个脚本就没有意义了。

关于字符串,支持汉字,可以直接输入,自己转化成宽字符,不需要查询按键的额外工作

点评

/s就不在后台了吧。不带/s我试了可以。  详情 回复 发表于 2019-7-17 21:29
哦,一下给忘了,可以CODE转码。  详情 回复 发表于 2019-7-17 19:08
回复

使用道具 举报

发表于 2019-7-17 19:08:00 | 显示全部楼层
datbik189 发表于 2019-7-17 18:53
手上没有WIN7,无法测试。

如果diskpart不能常驻内存,这个脚本就没有意义了。

哦,一下给忘了,可以CODE转码。
回复

使用道具 举报

发表于 2019-7-17 21:29:45 | 显示全部楼层
datbik189 发表于 2019-7-17 18:53
手上没有WIN7,无法测试。

如果diskpart不能常驻内存,这个脚本就没有意义了。

/s就不在后台了吧。不带/s我试了可以。

点评

5大测试了14309楼的PECMD和代码,Win7的系统diskpart不能挂着和常驻内存,方便的话麻烦试下,发Log上来。  详情 回复 发表于 2019-7-17 21:43
回复

使用道具 举报

发表于 2019-7-17 21:43:28 来自手机 | 显示全部楼层
红毛樱木 发表于 2019-7-17 21:29
/s就不在后台了吧。不带/s我试了可以。

5大测试了14309楼的PECMD和代码,Win7的系统diskpart不能挂着和常驻内存,方便的话麻烦试下,发Log上来。
回复

使用道具 举报

发表于 2019-7-18 09:45:47 | 显示全部楼层
本帖最后由 Anson4 于 2019-7-18 09:47 编辑
527104427 发表于 2019-7-17 18:36
看了一下,这个方法就是挨个把字母转换成按键编码,再挨个发送给diskpart
前提是得把所有英文字母的十六 ...


请教老司机:PECMD有什么指令能用来处理文本文件的字符串(查找和替换)?

我查看了帮助,WIRT 可以处理文本文件的字符串,但是只能以行为单位来处理。
我需要再CMD脚本中以指定的字符串为单位来处理,比如将“da撒4235Dew”替换成空""或者其它字符串,有什么办法吗?

目前我用 FR.exe 和 STR.exe 来处理,但是这两个不支持导出来的注册表,貌似是文档的编码(貌似是UNICODE)不受支持。


WRIT、FR.exe 和 STR.exe 有个共同的特点:直接修改目标文档。

点评

sed-替换命令 writ-修改文本命令 logs *xx.log envi^ envimode=1 read 123.reg,**,&V set-raw &V1=da撒4235Dew set-raw &V2= sed -ex &V=0:0,%&V1%,%&V2%,&V //load #999*命令_字符替换 &V 正向 0:0,&V1  详情 回复 发表于 2019-7-18 11:36
这个简单: SET ®FILE=%CurDir%\abc.reg SET &String=da撒4235Dew SET &ReplaceString=听说你想替换我是吗 //替换为空就删掉这赋值 READ %®FILE%,**,®STR SED &Results=0,%&String%,%&ReplaceS  详情 回复 发表于 2019-7-18 11:33
回复

使用道具 举报

发表于 2019-7-18 11:33:25 | 显示全部楼层
本帖最后由 527104427 于 2019-7-18 22:07 编辑
Anson4 发表于 2019-7-18 09:45
请教老司机:PECMD有什么指令能用来处理文本文件的字符串(查找和替换)?

我查看了帮助,WIRT 可以 ...

这个简单:

SET  &FILE=%CurDir%\abc.reg
SET  &String=da撒4235Dew
SET  &ReplaceString=听说你想替换我是吗  //替换为空就删掉这赋值
READ %&FILE%,**,&STR
SED  &Results=0,%&String%,%&ReplaceString%,%&STR%   //SED 变量名[;次名]=[替换次数][:跳过次数][标志],正则,替换,原串
WRIT-UNICODE *c *fv %&FILE%,$0,&Results




getf命令是另一种方法,不用读取到内存,直接查找文件,方法有点复杂。没有read那么简单粗暴。










点评

查看PECMD的帮助,没找到“®”号,这个表是什么意思呢? 替换成“&”貌似也不起作用。 实际上我还遇到了“\"两个变成一个的问题。 附件是我测试的文档,请进一步指导一下!  详情 回复 发表于 2019-7-18 19:10
感谢回复! 我试试看,主要还是要批量操作,多文档多处替换。  发表于 2019-7-18 17:48
回复

使用道具 举报

发表于 2019-7-18 11:36:12 | 显示全部楼层
Anson4 发表于 2019-7-18 09:45
请教老司机:PECMD有什么指令能用来处理文本文件的字符串(查找和替换)?

我查看了帮助,WIRT 可以 ...


sed-替换命令  writ-修改文本命令

logs *xx.log
envi^ envimode=1
read 123.reg,**,&V
set-raw &V1=da撒4235Dew
set-raw &V2=
sed -ex &V=0:0,%&V1%,%&V2%,&V
//load #999*命令_字符替换 &V 正向 0:0,&V1,&V2
writ-uni *-nl *c 123.reg,$+0,%&V%
mess. %&V%

点评

实际上我还遇到了“\"两个变成一个的问题。 附件是我测试的文档,查找替换的字符串改成了多种测试,结果都不行,请进一步指导一下!  详情 回复 发表于 2019-7-18 19:12
感谢回复! 我试试看,主要还是要批量操作,多文档多处替换。  发表于 2019-7-18 17:48
回复

使用道具 举报

发表于 2019-7-18 12:41:37 | 显示全部楼层
请教大神EDIT命令参数问题,我想在编辑框中实现点击就停止TIME的定时器,但[编辑框事件]中定义为回车和双击,似乎不太方便,而且我发现双击编辑框也没有反应,能不能自己更改成单击编辑框就停止定时器功能呢。我的代码是这样的:
  1. EDIT *Edit1,L110T62W110H18,%var%,TEAM ENVI @Timer1=0|ENVI @Edit1.Val=?ip,0
  2. TIME *Timer1,1000,CALL next
复制代码

我想实现单击编辑框中内容就停止计时,并自动由谋个变量接收更改的内容,不知道是不是我的代码不问题或是有没有其它实现方法呢?求大神指点下

点评

拿去,不谢: SET &::EN_CHANGE=0x0300 SET &::WM_KEYDOWN=0x0100 SET &::WM_LBUTTONDOWN=0x0201 SET &::WM_RBUTTONDOWN=0x0204 CALL @WIN _SUB WIN,W254H168,CMD, EDIT &Edit1,L24T25W110H18,123,  详情 回复 发表于 2019-7-18 17:30
自己修改红色命令 envi^ envimode=1 call @win _SUB WIN,H280W400,CMD, EDIT *Edit1,L110T62W110H18,123,,,,, ENVI @EDIT1.MSG=_0X201::&WP,&LP,ENVI @EDIT1=456 _END  详情 回复 发表于 2019-7-18 16:17
回复

使用道具 举报

发表于 2019-7-18 16:17:25 | 显示全部楼层
201287zr 发表于 2019-7-18 12:41
请教大神EDIT命令参数问题,我想在编辑框中实现点击就停止TIME的定时器,但[编辑框事件]中定义为回车和双击 ...


自己修改红色命令

envi^ envimode=1
call @win
_SUB WIN,H280W400,CMD,
      EDIT *Edit1,L110T62W110H18,123,,,,,
      ENVI @EDIT1.MSG=_0X201::&WP,&LP,ENVI @EDIT1=456
_END

点评

感谢大哥指点,学习学习了  详情 回复 发表于 2019-7-24 10:41
回复

使用道具 举报

发表于 2019-7-18 16:45:22 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-7-18 16:52 编辑

刚测试 win7 下确实 不能 让 diskpart 常驻。

但是 cmd 下 diskpart >x.txt ,然后在 pecmd 里 随时 获取 x.txt 的内容 到 @cmd_edit 中 是否可行呢?

点评

既然DISKPART在WIN7中不能挂起, 脚本就没有通用性. 不玩了. 你的要求应该可以通过计时器实现, SET-RAW &CMD=TEAM READ 123.TXT,**,&V|ENVI @CMD_EDIT=%&V% TIME Timer1,100,%&CMD% //100毫秒刷新一次  详情 回复 发表于 2019-7-18 17:15
回复

使用道具 举报

发表于 2019-7-18 17:15:43 | 显示全部楼层
dos时代菜鸟 发表于 2019-7-18 16:45
刚测试 win7 下确实 不能 让 diskpart 常驻。

但是 cmd 下 diskpart >x.txt ,然后在 pecmd 里 随时 获 ...


既然DISKPART在WIN7中不能挂起, 脚本就没有通用性. 不玩了.

你的要求应该可以通过计时器实现,

SET-RAW &CMD=TEAM READ 123.TXT,**,&V|ENVI @CMD_EDIT=%&V%
TIME Timer1,100,%&CMD%  //100毫秒刷新一次

DISKPART_窗口ID.EXE

1.01 MB, 下载次数: 1

回复

使用道具 举报

发表于 2019-7-18 17:30:24 | 显示全部楼层
201287zr 发表于 2019-7-18 12:41
请教大神EDIT命令参数问题,我想在编辑框中实现点击就停止TIME的定时器,但[编辑框事件]中定义为回车和双击 ...

拿去,不谢:

SET &::EN_CHANGE=0x0300
SET &::WM_KEYDOWN=0x0100
SET &::WM_LBUTTONDOWN=0x0201
SET &::WM_RBUTTONDOWN=0x0204

CALL @WIN

_SUB WIN,W254H168,CMD,
        EDIT &Edit1,L24T25W110H18,123,
        LABE &LABE1,L23T59W146H30,
        LABE &LABE2,L24T100W168H30,输入框内容为:%&Edit1%,
        ENVI &time=1
        TIME &Timer1,1000,CALL next
        CALL next
        ENVI @&Edit1.MSG=_%&WM_RBUTTONDOWN%: TEAM ENVI @&Timer1=0| ENVI @&LABE1=已停止计时
        ENVI @&Edit1.MSG=_%&WM_LBUTTONDOWN%: TEAM ENVI @&Timer1=0| ENVI @&LABE1=已停止计时
        ENVI @&Edit1.MSG=+%&WM_KEYDOWN%: TEAM ENVI @&Timer1=0| ENVI @&LABE1=已停止计时
        ENVI @&Edit1.ID=?;&Edit1_ID
        ENVI @this.MSG=_COMMAND#%&Edit1_ID%#%&EN_CHANGE%: ENVI @&LABE2=输入框内容为:%&Edit1%

_END

_SUB next
        ENVI @&LABE1=计时:%&time% 秒
        CALC #&time=%&time%+1
_END





点评

大神出手,果然不同凡响,倍感荣幸,万分感谢,学习下先  详情 回复 发表于 2019-7-24 10:40
回复

使用道具 举报

发表于 2019-7-18 19:10:13 | 显示全部楼层
本帖最后由 Anson4 于 2019-7-18 19:34 编辑
527104427 发表于 2019-7-18 11:33
这个简单:

SET  &reg;FILE=%CurDir%\abc.reg


查看PECMD的帮助,没找到“&#174;”号,这个表示什么意思呢?
替换成“&”貌似也不起作用。
实际上我还遇到了“\"两个变成一个的问题。
附件是我测试的文档,请进一步指导一下!
PECMD_Test_02.zip (549.91 KB, 下载次数: 4)

点评

1.我用手机编辑过,可能是这个原因,自动将“&”变成“®”了。 2.其实要学到东西,还是要自己搞懂原理,把\变成\\,也是非常简单的。 3.你用的PECMD太旧了,建议下载最新版,否则很多功能都用不成。最新版:h  详情 回复 发表于 2019-7-18 22:28
回复

使用道具 举报

发表于 2019-7-18 19:12:15 | 显示全部楼层
datbik189 发表于 2019-7-18 11:36
sed-替换命令  writ-修改文本命令

logs *xx.log

实际上我还遇到了“\"两个变成一个的问题。
附件是我测试的文档,查找替换的字符串改成了多种测试,结果都不行,请进一步指导一下!
PECMD_Test_01.zip (549.94 KB, 下载次数: 4)

点评

不要点评,直接回复多好。 SED命令中\要转换成\\,使用Load #999则不需要,我已经把他傻爪化,当然,需要配套使用相应的pecmd.  详情 回复 发表于 2019-7-18 21:14
不在电脑旁,测试不方便,我估计你是想把下面的字符串替换,对吧? set-raw &V1=C:\\Program Files\\Adobe Photoshop CC 2018.1.8  详情 回复 发表于 2019-7-18 19:51
使用14309楼的PECMD。 &V1和&V2的赋值是直接的,不用转义和修改  详情 回复 发表于 2019-7-18 19:43
你用14309楼的PECMD试试,脚本中去掉//LOad#999前面的//。 对SED中的正则还是不太精通。 |  详情 回复 发表于 2019-7-18 19:23
回复

使用道具 举报

发表于 2019-7-18 19:23:11 来自手机 | 显示全部楼层
Anson4 发表于 2019-7-18 19:12
实际上我还遇到了“\"两个变成一个的问题。
附件是我测试的文档,查找替换的字符串改成了多种测试,结果 ...


你用14309楼的PECMD试试,脚本中去掉//LOad#999前面的//。

对SED中的正则还是不太精通。

|

点评

也没有效果  发表于 2019-7-18 19:33
回复

使用道具 举报

发表于 2019-7-18 19:43:09 来自手机 | 显示全部楼层
Anson4 发表于 2019-7-18 19:12
实际上我还遇到了“\"两个变成一个的问题。
附件是我测试的文档,查找替换的字符串改成了多种测试,结果 ...

使用14309楼的PECMD。

&V1和&V2的赋值是直接的,不用转义和修改

点评

谢谢!  发表于 2019-7-18 20:44
再次测试,使用使用14309楼的PECMD成功了(//LOad#999前面的//没有去掉)!  发表于 2019-7-18 20:44
回复

使用道具 举报

发表于 2019-7-18 19:51:03 来自手机 | 显示全部楼层
本帖最后由 datbik189 于 2019-7-18 20:11 编辑
Anson4 发表于 2019-7-18 19:12
实际上我还遇到了“\"两个变成一个的问题。
附件是我测试的文档,查找替换的字符串改成了多种测试,结果 ...


不在电脑旁,测试不方便,我估计你是想把下面的字符串替换,对吧?
set-raw  &V1=C:\\Program Files\\Adobe Photoshop CC 2018.1.8

logs *xx.log
envi^ envimode=1
read PECMD_Test.reg,**,&V
set-raw &V1=C:\\Program Files\\Adobe Photoshop CC 2018.1.8
set-raw &V2=D:\\Design\\Adobe Photoshop CC 2018.1.8
//sed -ex &V=0:0,%&V1%,%&V2%,&V
load #999*命令_字符替换 &V 正向 0:0,&V1,&V2
writ-uni *-nl *c PECMD_Test.reg,$+0,%&V%
mess %&V%
mess %&V1%
mess %&V2%

点评

测试结果显示变量中的”\\“要改成"\\\\",不然会替换失败。  发表于 2019-7-18 21:08
回复

使用道具 举报

发表于 2019-7-18 21:14:42 | 显示全部楼层
Anson4 发表于 2019-7-18 19:12
实际上我还遇到了“\"两个变成一个的问题。
附件是我测试的文档,查找替换的字符串改成了多种测试,结果 ...

不要点评,直接回复多好。

SED命令中\要转换成\\,使用Load #999则不需要,我已经把他傻爪化,当然,需要配套使用相应的pecmd.

点评

明白了,谢谢!  详情 回复 发表于 2019-7-18 21:39
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-17 04:44

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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