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

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

   火... [复制链接]
 楼主| 发表于 2015-2-2 18:35:49 | 显示全部楼层
sp_star 发表于 2015-2-2 17:33
看样子只能分开。
最关键的是输出的信息要能被PECMD脚本读到,这样才能交互。
还有,gui的pecmd.exe也 ...

是的 可以重定向, 捕捉, 管道。
一旦 被管道到 DOS命令, 后面就会显示了。
FOR 也能收到到变量中, 太复杂
    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

很多行文本,MORE 会停顿。
有没有 不停顿的 命令,300行只接转到屏莫上。

FOR  太繁琐,
有没有命令 将  大段输出文本,直接 囫囵收到一个变量中。
回复

使用道具 举报

 楼主| 发表于 2015-2-2 18:40:00 | 显示全部楼层
sp_star 发表于 2015-2-2 18:04
作为50版发布
==>已经发布了吗?

已经发布了。

点评

pecmd_full是不是打包错了,都是x64的?  详情 回复 发表于 2015-2-2 20:11
回复

使用道具 举报

发表于 2015-2-2 20:11:26 | 显示全部楼层

pecmd_full是不是打包错了,都是x64的?

点评

FOR 捕捉到变量A.CMD: 其中A.INI:  详情 回复 发表于 2015-2-2 21:46
1: 改过来了。 2: 加强了管道读 , 可以一次直接读完 A.CMD:  详情 回复 发表于 2015-2-2 20:56
回复

使用道具 举报

 楼主| 发表于 2015-2-2 20:56:07 | 显示全部楼层
sp_star 发表于 2015-2-2 20:11
pecmd_full是不是打包错了,都是x64的?

1: 改过来了。

2: 加强了管道读 , 可以一次直接读完
A.CMD:
  1. dir C:\  | PECMD  TEAM  READ --,**,^&V^| MESS. %%^&V%%
复制代码

回复

使用道具 举报

 楼主| 发表于 2015-2-2 21:46:12 | 显示全部楼层
sp_star 发表于 2015-2-2 20:11
pecmd_full是不是打包错了,都是x64的?



FOR 捕捉到变量A.CMD:
  1. ::空格分割,分成25个变量 %a %b ...%y, 剩余给%z
  2. FOR /F "eol=; tokens=1-25,* delims= "  %%a IN ('PECMD.EXE LOAD a.ini') DO  @ set v1=%%a& set v2=%%b& set v3=%%c&& set v3=%%d

  3. ::一行都给var:
  4. FOR /F "eol=; tokens=1* delims="  %%a IN ('PECMD.EXE LOAD a.ini') DO  @set var=%%a
复制代码


其中A.INI:
  1. WRIT -,$+0,aa bb cc dd ee ff gg hh ii kkk llllll
复制代码

点评

你这个办法太麻烦了,一般人看都看不懂,还是用_cli版的直接一点。一般|more也行,不超过一屏就没问题。 还有sort, find "??"也可以,不过效果更不好。 突然想到这种方式有个缺点,就是和x86,x64有关。呵呵,脚  详情 回复 发表于 2015-2-2 22:28
回复

使用道具 举报

发表于 2015-2-2 22:28:24 | 显示全部楼层
mdyblog 发表于 2015-2-2 21:46
FOR 捕捉到变量A.CMD:

你这个办法太麻烦了,一般人看都看不懂,还是用_cli版的直接一点。一般|more也行,不超过一屏就没问题。
还有sort, find "??"也可以,不过效果更不好。

突然想到这种方式有个缺点,就是和x86,x64有关。呵呵,脚本文件就没这个问题。
回复

使用道具 举报

发表于 2015-2-3 14:47:17 | 显示全部楼层
FIND是否可以比较文件大小?或者检测文件大小。

点评

SIZE V=文件或目录名 再用IFEX $比较  详情 回复 发表于 2015-2-4 02:19
回复

使用道具 举报

发表于 2015-2-4 00:21:29 | 显示全部楼层
辛苦了,一直关注这个{:soso_e179:}

------------------------------------------------------------------------------

2015了哈!怎么不更新为PECMD2015.x.xx.xx,一定有道理哈!

------------------------------------------------------------------------------
回复

使用道具 举报

 楼主| 发表于 2015-2-4 02:19:56 | 显示全部楼层
ling3882688 发表于 2015-2-3 14:47
FIND是否可以比较文件大小?或者检测文件大小。

SIZE  V=文件或目录名

再用IFEX $比较

点评

好的,谢M大。  详情 回复 发表于 2015-2-4 17:20
回复

使用道具 举报

发表于 2015-2-4 17:20:37 | 显示全部楼层
mdyblog 发表于 2015-2-4 02:19
SIZE  V=文件或目录名

再用IFEX $比较

好的,谢M大。
回复

使用道具 举报

发表于 2015-2-4 20:36:42 | 显示全部楼层
本帖最后由 ling3882688 于 2015-2-4 20:45 编辑

如何在完整名称不确定的情况下获取指定文件名特定的部分?
例如:桌面有个文件夹名称是abcxxx
abc是固定的,但是xxx是变化的,例如文件名abc123 abc456都有可能,想要获取xxx的数值。
想使用NAME 但是通配符不行。
突然想到应该是可以用FORX命令的。我试下看看。
OK!搞定!
回复

使用道具 举报

 楼主| 发表于 2015-2-5 12:42:43 | 显示全部楼层
527104427 发表于 2015-2-5 12:31
发现一个问题,CMPS压缩过的配置文件,再用CMPS还能压缩,

能否先判断一下,已经CMPS过的文件,就跳过 ...

这个正常啊。 zip文件还能再压一次ZIP。


CMPS压缩文件有个标志CMP。
回复

使用道具 举报

 楼主| 发表于 2015-2-5 12:49:37 | 显示全部楼层
本帖最后由 mdyblog 于 2015-2-5 12:54 编辑
527104427 发表于 2015-2-5 12:44
双重ZIP的只要解两次压就正常了。双重CMPS的没办法运行……


解压2次,就可以运行了。

还有一点, 其实无法判断 是否是 CMPS压缩的文件, 可能人家的2进制数据文件就是这样。
CMP标志,只能用来排除, 不能用来确认。

只能人来保证了。

比如一文件内容:
####CMPS 用法
XXXXXXXXXXXXXXX

虽然有CMP标志,单不是 CMPS压缩文件。

点评

这段代码无法运行窗口 TEAM CALL cppt|WINDOWS1 _SUB WINDOWS1,L5T5W300H200,WinCMD功能演示,EXEC $%&Curdir%,%IconFile%#19,20,,-trap -size 命令段 ITEM ITEM1,L168T122W101H30,ITEM1,KILL \, TABL TAB  详情 回复 发表于 2015-2-6 16:15
回复

使用道具 举报

发表于 2015-2-6 16:15:58 | 显示全部楼层
本帖最后由 2012yws@ 于 2015-2-6 16:21 编辑
mdyblog 发表于 2015-2-5 12:49
解压2次,就可以运行了。

还有一点, 其实无法判断 是否是 CMPS压缩的文件, 可能人家的2进制数据文 ...


这段代码无法运行窗口
TEAM CALL cppt|WINDOWS1
_SUB WINDOWS1,L5T5W300H200,WinCMD功能演示,EXEC $%&Curdir%,%IconFile%#19,20,,-trap -size
        ITEM ITEM1,L168T122W101H30,ITEM1,KILL \,
        TABL TABL1,L22T10W216H60,TABL1
_END

_SUB cppt
FORX /S /O:-N C:\windows\*.INI,&&f,0,
{
        MESS %f% @#OK
}
_END

从88.40-最新88.50测试,X86系统和64都一样

再问,如何查询鼠标选择的窗口与控件的ID,如我要查询窗口中表格控件的名称,如何做?

点评

》》如我要查询窗口中表格控件的名称,如何做? 没明白。 具体以上面的代码说, 举例说说查XXX的XXXX。  详情 回复 发表于 2015-2-6 16:57
大哥你这代码 坑爹啊, 点的我手痛。 文件太多了, 我改成最多2个。 能运行: [attachimg]208803[/attachimg]  详情 回复 发表于 2015-2-6 16:55
回复

使用道具 举报

 楼主| 发表于 2015-2-6 16:55:53 | 显示全部楼层
2012yws@ 发表于 2015-2-6 16:15
这段代码无法运行窗口
TEAM CALL cppt|WINDOWS1
_SUB WINDOWS1,L5T5W300H200,WinCMD功能演示,EXEC $% ...

大哥你这代码 坑爹啊, 点的我手痛。

文件太多了, 我改成最多2个。

能运行:
00076.png
回复

使用道具 举报

 楼主| 发表于 2015-2-6 16:57:52 | 显示全部楼层
2012yws@ 发表于 2015-2-6 16:15
这段代码无法运行窗口
TEAM CALL cppt|WINDOWS1
_SUB WINDOWS1,L5T5W300H200,WinCMD功能演示,EXEC $% ...

》》如我要查询窗口中表格控件的名称,如何做?
没明白。
具体以上面的代码说, 举例说说查XXX的XXXX。

点评

1 [LOGS *X:\cc.log] :操作成功完成。 2 {CALL cppt} 11 {FORX /S /O:-N C:\windows\*.INI,&&f,0,} 13 [MESS C:\windows\win.ini @#OK] :操作成功完成。 13 [MESS C:\windows\system.ini @#OK] :操作成功完成  详情 回复 发表于 2015-2-7 00:03
回复

使用道具 举报

发表于 2015-2-7 00:03:17 | 显示全部楼层
mdyblog 发表于 2015-2-6 16:57
》》如我要查询窗口中表格控件的名称,如何做?
没明白。
具体以上面的代码说, 举例说说查XXX的XXXX。

1        [LOGS *X:\cc.log]        <0>        :操作成功完成。
2        {CALL cppt}
11        {FORX /S /O:-N C:\windows\*.INI,&&f,0,}
13        [MESS C:\windows\win.ini @#OK]        <0>        :操作成功完成。
13        [MESS C:\windows\system.ini @#OK]        <0>        :操作成功完成。
13        [MESS C:\windows\msdfmap.ini @#OK]        <0>        :操作成功完成。
我的还是不行,上面是日志,到了窗口就不行了,CPU立刻爆满,风扇狂转中...
查询,比如我要查询TABL控件的标题(TABL1),要如何获得这个输出变量?

点评

这样不行? 你试试。  详情 回复 发表于 2015-2-7 01:50
回复

使用道具 举报

 楼主| 发表于 2015-2-7 01:50:42 | 显示全部楼层
本帖最后由 mdyblog 于 2015-2-7 02:04 编辑
2012yws@ 发表于 2015-2-7 00:03
1        [LOGS *X:\cc.log]                :操作成功完成。
2        {CALL cppt}
11        {FORX /S /O:-N C:\windows\*.INI,&&f,0,}


  1. ENVI^ ENVIMODE=1
  2. CALL cppt
  3. CALL @WINDOWS1

  4. _SUB WINDOWS1,L5T5W300H200,WinCMD功能演示,EXEC $%&Curdir%,%IconFile%#19,20,,-trap -size
  5.         ITEM ITEM1,L168T122W101H30,ITEM1,KILL \,
  6.         TABL TABL1,L22T10W216H60,TABL1
  7. _END

  8. _SUB cppt
  9. FORX /S C:\windows\*.INI,&&f,5,
  10. {
  11.         MESS %f% @#OK
  12. }
  13. _END
复制代码

这样不行?
你试试。

2:
如表格:
ENVI $TAB=09
SET$ NL=0D 0A
TABL TABL1,L22T10W216H60,50:C1%TAB%+50:C2%TAB%-50:C3,11%TAB%222%NL%B11%TAB%B222

标题行是设计好的,不变, 自己先用变量保存好即可,如:TABL1.col1   TABL1.col2 ......

数据行 可以 查询。
如查询1,1
ENVI  @TABL1.VAL=?1.1;V1_1
MESS. %V1_1%
┃    │    │※可用"ENVI @名称.Val=?*.*;变量名"来获得全部数据。行间回车换行。                            ┃
┃    │    │※可用"ENVI @名称.Val=?行号[.列号];变量名"来查询指定行/单元的内容。各列TAB键间隔(下同)。    ┃

点评

//此BUG由搜索量过大造成,把搜索目录设置在文件较少的目录可以,同样的问题在DIR命令中也如此,只要超过了一定的量就如此,看来是变量限制导致的, //如果让机器狂转10-20来分钟,还是可以启动的,只是这样,无法满足实际  详情 回复 发表于 2015-2-7 11:34
回复

使用道具 举报

发表于 2015-2-7 01:59:04 | 显示全部楼层
本帖最后由 ling3882688 于 2015-2-7 02:02 编辑

1.jpg
我用PART -hextp -phy# -fill list part 1#2 ,&&PT2获取的类型为什么不一样呢?
上下红框处,我想要的是上面一个红框中的结果。

点评

还有这种怪事? 你用BootICE吧分区表备份下来, 传上来, 俺看看。  详情 回复 发表于 2015-2-7 02:07
回复

使用道具 举报

 楼主| 发表于 2015-2-7 02:07:45 | 显示全部楼层
ling3882688 发表于 2015-2-7 01:59
我用PART -hextp -phy# -fill list part 1#2 ,&&PT2获取的类型为什么不一样呢?
上下红框处,我想要的是 ...

还有这种怪事?
你用BootICE吧分区表备份下来, 传上来, 俺看看。

点评

好的 稍等。  详情 回复 发表于 2015-2-7 02:09
回复

使用道具 举报

发表于 2015-2-7 02:09:12 | 显示全部楼层
mdyblog 发表于 2015-2-7 02:07
还有这种怪事?
你用BootICE吧分区表备份下来, 传上来, 俺看看。

好的 稍等。
回复

使用道具 举报

发表于 2015-2-7 02:15:12 | 显示全部楼层
mdyblog 发表于 2015-2-7 02:07
还有这种怪事?
你用BootICE吧分区表备份下来, 传上来, 俺看看。

分区表.rar (59.58 KB, 下载次数: 6)

点评

拔插一下U盘,2者就同步了。  详情 回复 发表于 2015-2-7 04:38
回复

使用道具 举报

 楼主| 发表于 2015-2-7 04:38:11 | 显示全部楼层
本帖最后由 mdyblog 于 2015-2-7 04:41 编辑



拔插一下U盘,2者就同步了。

如图表:
  1. 磁盘:2
  2.   磁盘信息 磁盘号   大小(字节)         柱面数 磁头数 扇数 扇区 媒体     签名 总线
  3.               2    63786975232           7754    255   63  512   12 55276D56  7 MBR F
  4.   字符说明 激活 __本分区起始__ 分区 __本分区结束__ _______本分区______ ______本分区_______
  5.   激活为0x80    磁头_扇区_柱面 类型 磁头_扇区_柱面 _____起始扇区号____ _____扇区总数______
  6.   主分区1: 0x00 0x00 0x02 0x00 0xEE 0x7F 0x0E 0x19 0x01 0x00 0x00 0x00 0x27 0x40 0x06 0x00
  7.   主分区2: 0x00 0x7F 0x0F 0x19 0xAF 0x5A 0xAF 0xAB 0x28 0x40 0x06 0x00 0x18 0x43 0xA1 0x00
  8.   主分区3: 0x00 0xBF 0x85 0xBB 0x0B 0x4A 0xFF 0x4B 0x00 0x88 0xAB 0x00 0x00 0x30 0x23 0x00
  9.   主分区4: 0x00 0x4B 0xC1 0x4B 0x07 0xFE 0xFF 0xCC 0x00 0xB8 0xCE 0x00 0x00 0x00 0x20 0x00
  10.   标志   : 0x55 0xAA
  11.   全部分区: 1   2   3   4
  12.   分区  类型 激活(1) 起始(字节)     长度(字节)    隐藏扇区     结尾(字节) 物理# 盘符
  13.      1  0xEE   0            512      209735168           1      209735680    1   
  14.      2  0xAF   0      209735680     5411057664      409640     5620793344    2   
  15.      3  0x0B   0     5755633664     1180696576    11241472     6936330240    3   
  16.      4  0x07   0     6936330240     1073741824    13547520     8010072064    4   
复制代码

00066.png

点评

可是我的本地硬盘也是一样的情况。  详情 回复 发表于 2015-2-7 11:02
回复

使用道具 举报

发表于 2015-2-7 11:02:38 | 显示全部楼层
mdyblog 发表于 2015-2-7 04:38
拔插一下U盘,2者就同步了。

如图表:

可是我的本地硬盘也是一样的情况。

点评

>>本地硬盘 重启 机器 或执行 : pecmd part -up hupdate 1 1 是磁盘号,按实际。  详情 回复 发表于 2015-2-7 11:52
回复

使用道具 举报

发表于 2015-2-7 11:34:45 | 显示全部楼层
mdyblog 发表于 2015-2-7 01:50
这样不行?
你试试。

//此BUG由搜索量过大造成,把搜索目录设置在文件较少的目录可以,同样的问题在DIR命令中也如此,只要超过了一定的量就如此,看来是变量限制导致的,
//如果让机器狂转10-20来分钟,还是可以启动的,只是这样,无法满足实际的使用要求
//另外,如果在FOR循环时开启logs,光是log文件就有恐怖的1G以上的个头,这个应该与for命令的循环设计有关,郁闷啊!
//呵呵,寒冷的一个晚上啊,不知楼主那边冷不?
//既然知道了问题所在,请楼主费心解决它好了.
查询问题,我问的不是不是这个控件存储的信息或是它的标题,而是这个控件本身在窗口中的标题名称,也就是说如何返回控件本身的名称,如果能查询到控件的类型就更好了,具体如:查询TABL1,获得控件类型-TABL;该控件名称-TABL1,就是如果这是一个TABL控件,希望可以查询到它的类型是(TABL),而在窗口中的名称是(TABL1)这样的回传信息,并赋值给变量.
附上可以测试DIR成功的完整代码,但不能到窗口:
//logs * x:\ccc.log
ENVI^ EnviMode=1
//设置换行符合分割符
ENVI$ TAB=09
ENVI$ NLC=0a
ENVI$ NL=0d 0a
TEAM CALL cppt|WINDOWS1
_SUB WINDOWS1,L5T5W320H220,WinCMD功能演示,,%IconFile%#19,10,,-trap -size
    ENVI &TITLE1=#0xFF0000#0xD7FFD7+210:imte1%TAB%#0xFF0000#0xD7FFD7+30:imte2%TAB%#0xFF0000#0xD7FFD7+130:imte3
    ITEM ITEM1,L188T141W101H30,ITEM1,KILL \,
    TABL TABL1,L5T6W297H132,%&TITLE1%,%Df0%
_END
_SUB cppt
//c:\*.*  x:\windows\*.inf C:\*.INI
ENVI &sfdir=c:\*.*
TEAM DIR &INILIST /s /O:N %&sfdir%| MESS. %&INILIST%@#OK
//FORX /S /O:-N X:\windows\*.ini,&&f,0,
FORX *NL &INILIST,&&f,
{
                NAME -ext &f0=%&f%
        ENVI Df0=%&f0%%NLC%%Df0%
}
_END

点评

大概研究下说明。 对于一般控件 %控件名% 返回的就是标题名。 有些控件没有标题名,如TABL。 自己用变量保存需要的信息。 至于类型,类型 是不变的, 写程序的时候就知道了。一般不需要这个。 复杂的应用  详情 回复 发表于 2015-2-7 12:04
》》//此BUG由搜索量过大造成,把搜索目录设置在文件较少的目录可以,同样的问题在DIR命令中也如此,只要超过了一定的量就如此,看来是变量限制导致的, 你理解很特别。 一般人不人不认为只是BUG。 在一个海量数据中  详情 回复 发表于 2015-2-7 11:58
回复

使用道具 举报

 楼主| 发表于 2015-2-7 11:52:38 | 显示全部楼层
ling3882688 发表于 2015-2-7 11:02
可是我的本地硬盘也是一样的情况。

>>本地硬盘
重启 机器
或执行 :
pecmd part  -up hupdate 1

1 是磁盘号,按实际。

点评

重启和命令均无效。  详情 回复 发表于 2015-2-7 12:32
回复

使用道具 举报

 楼主| 发表于 2015-2-7 11:58:28 | 显示全部楼层
本帖最后由 mdyblog 于 2015-2-7 12:14 编辑
2012yws@ 发表于 2015-2-7 11:34
//此BUG由搜索量过大造成,把搜索目录设置在文件较少的目录可以,同样的问题在DIR命令中也如此,只要超过了 ...

》》//此BUG由搜索量过大造成,把搜索目录设置在文件较少的目录可以,同样的问题在DIR命令中也如此,只要超过了一定的量就如此,看来是变量限制导致的,
你理解很特别。
一般人 认为 这是BUG。

在一个海量数据中搜索, 就是这样的效果。(win7/8的系统目录 海了去)
你要改变你的设计。避免“海量数据中搜索”。


所以以我上面说 “坑爹”的代码! 我手都点酸了。

回复

使用道具 举报

 楼主| 发表于 2015-2-7 12:04:04 | 显示全部楼层
本帖最后由 mdyblog 于 2015-2-7 12:12 编辑
2012yws@ 发表于 2015-2-7 11:34
//此BUG由搜索量过大造成,把搜索目录设置在文件较少的目录可以,同样的问题在DIR命令中也如此,只要超过了 ...


大概研究下说明。
00067.png
对于一般控件 %控件名% 返回的就是标题名。
有些控件没有标题名,如TABL。 自己用变量保存需要的信息。


至于类型,类型 是不变的, 写程序的时候就知道了。一般不需要这个。

复杂的应用,  自己用过变量保存起来就就可以了。
比如 %LAB1.tp% 保存 "LABE"

点评

原来控件查询已经有这个功能,谢谢楼主 不过,对于for和dir的问题,我对比了cmd的dir和for,发现用DOS命令列出C盘的海量文件只要5-10秒左右,而读这个变量到MESS显示要5分钟以上甚至更多,用for和dir也如此,还有,就是窗口  详情 回复 发表于 2015-2-7 15:19
回复

使用道具 举报

发表于 2015-2-7 12:32:50 | 显示全部楼层
本帖最后由 ling3882688 于 2015-2-7 12:34 编辑
mdyblog 发表于 2015-2-7 11:52
>>本地硬盘
重启 机器
或执行 :


重启和命令均无效。但是BOOTICE里显示的是正确的,稍后我上传我硬盘的分区表。
回复

使用道具 举报

发表于 2015-2-7 12:38:06 | 显示全部楼层
本帖最后由 ling3882688 于 2015-2-7 12:47 编辑
mdyblog 发表于 2015-2-7 11:52
>>本地硬盘
重启 机器
或执行 :

硬盘分区表.rar (63.42 KB, 下载次数: 2) Bootice和Diskgenius是一样的都是AF,diskpart显示0x07,PART -GUI导出结果显示一个是AF一个是07,那个分区格式是HFS.

点评

HFS 的苹果的吧。 那可能苹果的驱动做了“手脚”, 自动将其系统的 AF “转译” 07, 系统认为其类型标识为07, 报告给应用程序的也是07. diskpart显示的是系统类型, 所以是0x07 Bootice和Diskgenius  详情 回复 发表于 2015-2-7 14:19
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-13 03:05

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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