无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: mdyblog
打印 上一主题 下一主题

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

    [复制链接]
19231#
 楼主| 发表于 2024-6-1 11:02:06 | 只看该作者
本帖最后由 mdyblog 于 2024-6-1 11:57 编辑
hhh333 发表于 2024-6-1 05:49
怎么用sed去除字符串从右边开始的第一个回车换行符?看说明似乎有,但不知如何用

MS(DOS/WIN) 的回车换行符是 2个 字符 0x0d  0x0a
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333
SED  ;&&n=?0,%&NL%,,%&v1% //总次数
CALC  #&&n_1=%&n% - 1  //右边
SED &v2=1:%&n_1%,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]   //右边

-----------------------------
  v1[
111
222
333]
  v2[
111
222333]




点评

这个也还算简洁,但要两次SED 第一次得到字符出现次数,第二次利用跳过总次数减1,刚好是倒数第一个  详情 回复 发表于 2024-6-1 18:48
这个SED有点疑惑,还是说我的写法有问题。(名/行名前~则从右计算位置)SED B;/=1,.*4,,%A% 加上 .* 这样可以替换掉最后一个4前面的内容[/backcolor] SED C;/=1,4,,%A%[/backcolor] 少了 .* 就只能替换左边开始的第  详情 回复 发表于 2024-6-1 12:44
回复

使用道具 举报

19232#
 楼主| 发表于 2024-6-1 12:13:07 | 只看该作者
hhh333 发表于 2024-6-1 05:49
怎么用sed去除字符串从右边开始的第一个回车换行符?看说明似乎有,但不知如何用

还可以 RPOS*

ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333
RPOS*  &&i=%&NL%,1,%&v1%
IFEX #%i%<=0,  //没有
{*  SET~ &v2=&v1
}!
{*
CALC &i1=%&i%-1
CALC &i2=%&i%+1
^SET v2=%%&V1:~0,%&i1%%%%%&V1:~%&i2%%%
}

MESS [%&v2%]

--------------
[111
222333]

点评

我以为sed可以从右边开始替换。 如果没有看来用rpos好理解一些  详情 回复 发表于 2024-6-1 18:27
回复

使用道具 举报

19233#
发表于 2024-6-1 12:44:54 | 只看该作者
本帖最后由 liangnijian 于 2024-6-1 13:00 编辑
mdyblog 发表于 2024-6-1 11:02
MS(DOS/WIN) 的回车换行符是 2个 字符 0x0d  0x0a
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333

这个SED有点疑惑,还是说我的写法有问题。(名/行名前~则从右计算位置)
SED B;/=1,.*4,,%A% 加上 .* 这样可以替换掉最后一个4前面的内容
SED C;/=1,4,,%A% 少了 .* 就只能替换左边开始的第一个4
如果要从右侧开始得按你的来写吗
  1. ENVI A=1234554321
  2. SED B;/=1,.*4,,%A%
  3. SED C;/=1,4,,%A%
  4. SED D=1,4.*,,%A%
  5. SED E=1,4,,%A%
  6. MESS %B%\n%C%\n%D%\n%E%
复制代码





回复

使用道具 举报

19234#
发表于 2024-6-1 13:32:48 | 只看该作者
liangnijian 发表于 2024-6-1 12:44
这个SED有点疑惑,还是说我的写法有问题。(名/行名前~则从右计算位置)
SED B;/=1,.*4,,%A% 加上 .* 这 ...

.*是贪婪匹配吧,尽可能匹配多
回复

使用道具 举报

19235#
发表于 2024-6-1 14:43:38 | 只看该作者
m大要不要搞个结构体自动对齐
回复

使用道具 举报

19236#
 楼主| 发表于 2024-6-1 16:08:03 | 只看该作者
liangnijian 发表于 2024-6-1 12:44
这个SED有点疑惑,还是说我的写法有问题。(名/行名前~则从右计算位置)
SED B;/=1,.*4,,%A% 加上 .* 这 ...

这个说的是查询
ENVI A=12345
SED  ~I=?,2,,%A%   //I=4

点评

那就可以加个功能了,SED默认左侧开始,加个参数从右侧开始  详情 回复 发表于 2024-6-1 16:28
回复

使用道具 举报

19237#
 楼主| 发表于 2024-6-1 16:18:01 | 只看该作者
泮安宁 发表于 2024-6-1 14:43
m大要不要搞个结构体自动对齐

具体什么意思, 来个例子

点评

64位系统,_CRYPTOAPI_BLOB总大小16个字节, cbData4个字节,pbData要偏移8字节而不是偏移4字节紧跟在 cbData后面,好像是结构体总大小和结构体成员的起始位置都是8的倍数  详情 回复 发表于 2024-6-1 16:34
回复

使用道具 举报

19238#
发表于 2024-6-1 16:28:59 | 只看该作者
mdyblog 发表于 2024-6-1 16:08
这个说的是查询
ENVI A=12345
SED  ~I=?,2,,%A%   //I=4

那就可以加个功能了,SED默认左侧开始,加个参数从右侧开始
回复

使用道具 举报

19239#
发表于 2024-6-1 16:34:27 | 只看该作者
本帖最后由 泮安宁 于 2024-6-1 16:37 编辑
mdyblog 发表于 2024-6-1 16:18
具体什么意思, 来个例子
  1. typedef struct _CRYPTOAPI_BLOB {
  2.                             DWORD   cbData;
  3. BYTE    *pbData;
  4. }
复制代码

64位系统,_CRYPTOAPI_BLOB总大小16个字节, cbData4个字节,pbData要偏移8字节而不是偏移4字节紧跟在 cbData后面,好像是结构体总大小和结构体成员的起始位置都是8的倍数


回复

使用道具 举报

19240#
发表于 2024-6-1 18:27:03 | 只看该作者
本帖最后由 hhh333 于 2024-6-1 18:32 编辑
mdyblog 发表于 2024-6-1 12:13
还可以 RPOS*

ENVI^ EnviMode=1

我以为sed可以从右边开始替换。
如果没有看来用rpos好理解一些
  1. ENVI^ EnviMode=1
  2. ENVI. nl=\n
  3. ENVI A=AAAAA%nl%
  4. ENVI B=BBBBB
  5. ENVI C=%A%%B%%A%%B%
  6. RPOS* N=%nl%,1,%C%
  7. IFEX #%N%>0,
  8. {
  9.         CALC I=%N%-1
  10.         LSTR S=%I%,%C%
  11.         CALC I=%N%+2
  12.         MSTR E=%I%,0,%C%
  13.         ENVI D=%S%%E%
  14. }
  15. MESS %C%%nl%%nl%%D%
复制代码
另外,不知道mstr有不有取倒数第一部分,和取除倒数第一部的所有部分的功能(或者取第一到倒数第一部分之间的部分),如果有的话也好解决。但最好还是sed能够提供,倒数替换的功能,那就一条语句就解决了

回复

使用道具 举报

19241#
发表于 2024-6-1 18:48:12 | 只看该作者
mdyblog 发表于 2024-6-1 11:02
MS(DOS/WIN) 的回车换行符是 2个 字符 0x0d  0x0a
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333

这个也还算简洁,但要两次SED
第一次得到字符出现次数,第二次利用跳过总次数减1,刚好是倒数第一个

点评

GF版 , SED可反向替换ENVI^ EnviMode=1 SET$ &NL=0d 0a SET &v1=111%&NL%222%&NL%333 SED &v2=-1,%&NL%,,%&v1% MESS. v1[%&NL%%&v1%]%&NL% v2[%&NL%%&v2%] ----------------------------------------  详情 回复 发表于 2024-6-2 00:16
回复

使用道具 举报

19242#
 楼主| 发表于 2024-6-2 00:16:49 | 只看该作者
hhh333 发表于 2024-6-1 18:48
这个也还算简洁,但要两次SED
第一次得到字符出现次数,第二次利用跳过总次数减1,刚好是倒数第一个

GF版 , SED可反向替换ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333
SED &v2=-1,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]

----------------------------------------
  v1[
111
222
333]
  v2[
111
222333]

点评

这么快,不错,我试一下  详情 回复 发表于 2024-6-2 11:23
回复

使用道具 举报

19243#
发表于 2024-6-2 11:23:50 | 只看该作者
mdyblog 发表于 2024-6-2 00:16
GF版 , SED可反向替换ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333

这么快,不错,我试一下
回复

使用道具 举报

19244#
发表于 2024-6-2 14:17:42 | 只看该作者
本帖最后由 hhh333 于 2024-6-2 16:56 编辑

还有点不对,如果加负号是反序次数,那-2应该从右往左代替两次,而这个只是倒数第二个替代了
  1. SET$ &NL=0d 0a
  2. SET &v1=111%&NL%222%&NL%333%&NL%444
  3. SED &v2=-2,%&NL%,,%&v1%
  4. MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]
复制代码

执行结果如下:
-------
v1[
111
222
333
444]
  v2[
111
222333
444]

按理解应该是SED &v2=-1:1,%&NL%,,%&v1%的效果

点评

-跳数:反向 1:-n可简写-n ENVI^ EnviMode=1 SET$ &NL=0d 0a SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5 SED &v2=2:-2,%&NL%,,%&v1% MESS. v1[%&NL%%&v1%]%&NL% v2[%&NL%%&v2%] --------  详情 回复 发表于 2024-6-2 18:24
回复

使用道具 举报

19245#
 楼主| 发表于 2024-6-2 18:24:33 | 只看该作者
本帖最后由 mdyblog 于 2024-6-3 10:12 编辑
hhh333 发表于 2024-6-2 14:17
还有点不对,如果加负号是反序次数,那-2应该从右往左代替两次,而这个只是倒数第二个替代了
执行结果如下 ...

PECMD2012.1.88.05.94Stable-240512GG测试.7z=[次数][:位次][标志],正则,替换,原串 替
位次<0:反向 1:-n可简写-n  

ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5
SED &v2=2:-2,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]

--------------------
  v1[
1A11
2A22
3A33
4A44
55A5]
  v2[
1A11
2A223A334A44
55A5]

从右往左代替两次:
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333%&NL%444
SED &v2=2:-2,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]
--------------------
  v1[
111
222
333
444]
  v2[
111222333
444]



///////////反向单元 查询
ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=1A11%&NL%2AA22%&NL%3AAA33%&NL%4AAAA44%&NL%55AAAAAA5
SED -ni *&nm;&nmt;&nml=?2:-2,A+,&A1;&A2,%&v1%
MESS. [%&nm%] [%&nmt%] [%&nml%] A1[%&A1%] A2[%&A2%]
--------------------------------
[15 23] [2] [3 4] A1[AAA] A2[AAAA]

点评

这个输出结果是不是有问题,第一个输出少了 55A5 ,第二个输出少了444  详情 回复 发表于 2024-6-3 09:10
这么定义更加不好理解,我觉得还是把1:1,2:2,3:1看成一个整体比较好,譬如 1111 2222 3333 4444 5555 目前SED 2:2 表示从左到右查找回车换行并跳过两次会得到 1111(跳过) 2222(跳过) 333344445555  详情 回复 发表于 2024-6-3 08:10
回复

使用道具 举报

19246#
发表于 2024-6-3 08:10:14 | 只看该作者
本帖最后由 hhh333 于 2024-6-3 08:48 编辑
mdyblog 发表于 2024-6-2 18:24
PECMD2012.1.88.05.94Stable-240512GG测试.7z
-跳数:反向     1:-n可简写-n   
ENVI^ EnviMode=1

这么定义更加不好理解,我觉得还是把1:1,2:2,3:1看成一个整体比较好,譬如
1111
2222
3333
4444
5555
目前SED 2:2 表示从左到右查找回车换行并跳过两次会得到
1111(跳过)
2222(跳过)
333344445555
这个是正确并且好理解的

SED 2:-2
结果应该是
111122223333(跳过)
4444(跳过)
5555

我觉得应该用SED -2:2更好理解,前面的负号表示反向比较好。即:[查找方向+或-][替代次数[:跳过次数]],查找方向+号可以省略表示从左到右,-号表示从右到左,替代次数默认为1,跳过次数默认为0



点评

也么也没多想。 参照 MSTR 改的 。 含义 次数:-起点 // -1 -2 -3 .... 次数:起点 // 0 1 2 3 .... 则么改都可以, 编程差别不大。 大家觉得  详情 回复 发表于 2024-6-3 09:18
我估计是减号放后面对源码的修改量最小,不然m大怎么会这么做呢  详情 回复 发表于 2024-6-3 09:05
回复

使用道具 举报

19247#
发表于 2024-6-3 09:05:25 | 只看该作者
hhh333 发表于 2024-6-3 08:10
这么定义更加不好理解,我觉得还是把1:1,2:2,3:1看成一个整体比较好,譬如
1111
2222

我估计是减号放后面对源码的修改量最小,不然m大怎么会这么做呢
回复

使用道具 举报

19248#
发表于 2024-6-3 09:10:37 | 只看该作者
mdyblog 发表于 2024-6-2 18:24
PECMD2012.1.88.05.94Stable-240512GG测试.7z
-跳数:反向     1:-n可简写-n   
ENVI^ EnviMode=1

这个输出结果是不是有问题,第一个输出少了 55A5 ,第二个输出少了444
回复

使用道具 举报

19249#
发表于 2024-6-3 09:15:34 | 只看该作者
527104427 发表于 2024-6-3 09:05
我估计是减号放后面对源码的修改量最小,不然m大怎么会这么做呢

是的,SED 2:-2,两个2就是为了反向代替两次?与SED 2:2,代替两次跳过两次不同了
回复

使用道具 举报

19250#
 楼主| 发表于 2024-6-3 09:18:38 | 只看该作者
本帖最后由 mdyblog 于 2024-6-3 13:02 编辑
hhh333 发表于 2024-6-3 08:10
这么定义更加不好理解,我觉得还是把1:1,2:2,3:1看成一个整体比较好,譬如
1111
2222

也么也没多想。 参照  MSTR 改的 。 含义
次数:-起次   // -1 -2 -3   ....
次数:起次   // 0 1 2 3   ....


则么改都可以, 编程差别不大。
大家觉得怎么合适,改都来得及。




重新上传了。 改了说明, 和MSTR基本保持一致

SED  变量名[;次名]=[次数][:起次][标志],正则,替换,原串
SED -ni 名[;次名][;行名]=?[次][:起次][标志],找正则串,[子名1;子名2],原串
    起次<0:反向  


MSTR 变量名=位置,长度,字符串    //位置<0 则 反向
MSTR[*$] [-xq] [-left] 变量名1,变量名2...,变量名n=<[~]串号1[-]> //串号<0 则 反向


都是  位置<0   反向

回复

使用道具 举报

19251#
 楼主| 发表于 2024-6-3 10:30:46 | 只看该作者
liangnijian 发表于 2024-6-3 09:10
这个输出结果是不是有问题,第一个输出少了 55A5 ,第二个输出少了444

最后一哆嗦, 优化 出了 差错。 重新上传了。


ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=1A11%&NL%2A22%&NL%3A33%&NL%4A44%&NL%55A5
SED &v2=2:-2,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]

-----------------------
  v1[
1A11
2A22
3A33
4A44
55A5]
  v2[
1A11
2A223A334A44
55A5]

点评

用起次,也好理解了,妥了  详情 回复 发表于 2024-6-4 18:24
回复

使用道具 举报

19252#
发表于 2024-6-3 15:23:41 | 只看该作者
adsl的-start参数什么意思
adsl的说明是不是不太全

回复

使用道具 举报

19253#
 楼主| 发表于 2024-6-3 15:56:05 | 只看该作者
泮安宁 发表于 2024-6-3 15:23
adsl的-start参数什么意思
adsl的说明是不是不太全

启动  该连接
回复

使用道具 举报

19254#
发表于 2024-6-3 16:21:54 | 只看该作者

测试win8.1需要-start,win11不需要就能连接,不知什么区别

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

SED -ni 名[;次名][;行名]=?[次][:起次][标志],找正则串,[子名1;子名2],原串
这个[标志]怎么用的,可以写个例子吗
回复

使用道具 举报

19255#
发表于 2024-6-3 16:40:42 | 只看该作者
pe启动界面密码输入框,焦点问题。看是不是pecmd的问题。
默认无法输入,因为焦点不在对话框上,需要点击一下才可以输入
http://bbs.wuyou.net/forum.php?m ... 23&fromuid=1345
回复

使用道具 举报

19256#
发表于 2024-6-3 17:53:56 | 只看该作者
freesoft00 发表于 2024-6-3 16:40
pe启动界面密码输入框,焦点问题。看是不是pecmd的问题。
默认无法输入,因为焦点不在对话框上,需要点击 ...

ENVI @窗口和控件名.POS=[#]左:上:[@]宽:高:层级:透明度:前置:激活:父窗口ID::客宽:客高

设置一下呗
回复

使用道具 举报

19257#
 楼主| 发表于 2024-6-3 19:27:07 | 只看该作者
泮安宁 发表于 2024-6-3 16:21
测试win8.1需要-start,win11不需要就能连接,不知什么区别

--------------------------------------- ...

正则,替换,原串
对应 这3各部分是否白痴书写的样子,%V%就保持这个样子, 不解释变量; 就给个*  _为占位,  为表操作后面的。

ENVI^ EnviMode=1 ForceLocal=1
ENVI bai=%
ENVI V=abc
SET$ &NL=0d 0a
SET &v1=123%bai%V%bai%456abc  //123%V%456abc
SED &v2=0*,%V%,,%&v1%  // 替换 "%V%"
SED &v3=0,%V%,,%&v1%   // 替换 "abc"
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]%&NL%   v3[%&NL%%&v3%]
EXIT
-------------------------------------------------------------------
  v1[
123%V%456abc]
  v2[
123456abc]
   v3[
123%V%456]

回复

使用道具 举报

19258#
发表于 2024-6-3 20:38:15 | 只看该作者
mdyblog 发表于 2024-6-3 19:27
正则,替换,原串
对应 这3各部分是否白痴书写的样子,%V%就保持这个样子, 不解释变量; 就给个*  _为占位 ...

懂了
回复

使用道具 举报

19259#
发表于 2024-6-4 13:15:38 | 只看该作者
WRIT 改 UTF-8 的文本会乱码,并且编码会变成ANSI



PECMD:
  1. WRIT 1.TXT,5,加载本地驱动=1
复制代码



1.txt
  1. 加载外置软件=1

  2. 加载外置驱动=0

  3. 加载本地驱动=0
复制代码


回复

使用道具 举报

19260#
发表于 2024-6-4 13:33:43 | 只看该作者
liangnijian 发表于 2024-6-4 13:15
WRIT 改 UTF-8 的文本会乱码,并且编码会变成ANSI

WRIT-UTF8指定编码
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-21 15:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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