无忧启动论坛

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

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

    [复制链接]
19201#
 楼主| 发表于 2024-5-31 20:10:17 | 只看该作者
hhh333 发表于 2024-5-31 15:26
想实现数组下标相似的功能,请教大家一个问题,上述代码怎么在EnviMode=1的时候也有效,要怎么写,就是等号 ...

还有一种
ENVI~    B=A%N%
右边 当做 变量名
回复

使用道具 举报

19202#
发表于 2024-6-1 05:49:14 来自手机 | 只看该作者
本帖最后由 hhh333 于 2024-6-1 05:55 编辑

怎么用sed去除字符串从右边开始的第一个回车换行符?看说明似乎有,但不知如何用
回复

使用道具 举报

19203#
发表于 2024-6-1 09:09:52 | 只看该作者
liangnijian 发表于 2024-6-1 09:06
\n 表示换行
SED A=1,\n,,%A%

这个是从左边开始的
回复

使用道具 举报

19204#
发表于 2024-6-1 09:40:37 | 只看该作者
还是不对
  1. ENVI A=AAAAA%nl%
  2. ENVI B=BBBBB
  3. ENVI C=%A%%B%%A%%B%
  4. SED D;/=1,%nl%,,%C%
  5. MESS %C%%nl%%nl%%D%
复制代码
回复

使用道具 举报

19205#
 楼主| 发表于 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]




回复

使用道具 举报

19206#
 楼主| 发表于 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]

回复

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

19209#
 楼主| 发表于 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
回复

使用道具 举报

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

具体什么意思, 来个例子
回复

使用道具 举报

19211#
发表于 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的倍数


回复

使用道具 举报

19212#
发表于 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能够提供,倒数替换的功能,那就一条语句就解决了

回复

使用道具 举报

19213#
发表于 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,刚好是倒数第一个
回复

使用道具 举报

19214#
 楼主| 发表于 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]

回复

使用道具 举报

19215#
发表于 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

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

使用道具 举报

19216#
发表于 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%的效果
回复

使用道具 举报

19217#
 楼主| 发表于 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]
回复

使用道具 举报

19218#
发表于 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



回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

19221#
 楼主| 发表于 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   反向

回复

使用道具 举报

19222#
 楼主| 发表于 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]

回复

使用道具 举报

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

回复

使用道具 举报

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

启动  该连接
回复

使用道具 举报

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

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

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

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

使用道具 举报

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

使用道具 举报

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

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

设置一下呗
回复

使用道具 举报

19228#
 楼主| 发表于 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]

回复

使用道具 举报

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

懂了
回复

使用道具 举报

19230#
发表于 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, 2025-9-16 16:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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