无忧启动论坛

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

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

    [复制链接]
1201#
发表于 2024-5-14 13:06:14 | 显示全部楼层
mdyblog 发表于 2024-5-14 04:17
我这7PE正常。 没有你那个环境。
我把测试PECMD发上来。 你抽空测试下吧。看看那个正常。
https://wwi. ...

M大出关了!有空这几个问题修一修呗18445#



http://bbs.c3.wuyou.net/forum.ph ... 402&pid=4879285






第三个问题,在 win7 和 win10 中都试过,是一样的症状。实机测试。


回复

使用道具 举报

1202#
发表于 2024-5-26 11:52:06 | 显示全部楼层
mdyblog 发表于 2024-5-26 07:45
DBGN 13930: 0 49 40 4096 0 0
NVME 专用方法也失败(0)



我这貌似可以


回复

使用道具 举报

1203#
发表于 2024-5-26 12:43:12 | 显示全部楼层
本帖最后由 527104427 于 2024-5-26 12:45 编辑
mdyblog 发表于 2024-5-26 07:45
DBGN 13930: 0 49 40 4096 0 0
NVME 专用方法也失败(0)

这个问题能不能处理下:

disp 命令不加 -confirm 参数时,执行后也会有14秒延时,导致下一个命令不能立即执行。
比如以下命令:
disp w1600 h900
mess ok
要等disp完成后14秒,才会弹出ok窗口


实际测试win7和win10都是同样的问题。
我自己写了一段代码,用-confirm参数,然后模拟鼠标点击,就没有14秒延时的问题:
  1. set^ EnviMode=1
  2. set^ ForceLocal=1
  3. set bm_click=0x00F5
  4. set wm_close=0x0010

  5. //disp 的 bug:不加 -confirm 参数时,设置完会等待14秒;加 -confirm 参数时又无法静默执行。以下代码解决此bug,可以静默运行,设置完无等待。
  6. exec* -cmd::*1:CloseWindow -pid:MyPid -hide -err+ -incmd ret=*pecmd disp -confirm w1600 h900
  7. mess=. ok1

  8. _sub CloseWindow
  9.         envi v0=
  10.         find --forpid:%MyPid% --class:#32770 --wid*@ v0,
  11.         forx *nl v0,v1,
  12.         {
  13.                 team envi v2=| envi v3=| envi v4=| envi v5=| envi v6=| envi v7=
  14.                 mstr* * v2=<2>v1
  15.                 set @@Visible=%v2%:*0
  16.                 wait 1  //必须在此处设置延时,否则有一定几率设置失败
  17.                 set @@IsWindow=?%v2%:v3
  18.                 ifex $%v3%>0,
  19.                 {
  20.                         find --class:Button --wid*@%v2% v4,
  21.                         lpos* * ,v5=&K,1,v4  //还原(&R)  //保留更改(&K)
  22.                         wait 1  //必须在此处设置延时,否则有一定几率设置失败
  23.                         ifex $%v5%>0,
  24.                         {
  25.                                 read -*,%v5%,v6,v4
  26.                                 mstr* * v7=<2>v6
  27.                                 set @@pos=%v2%:::::::1
  28.                                 set @@sendmsg=%v7%;%bm_click%;0;0  //模拟用户单击按钮。 此消息会导致该按钮接收 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息,以及按钮的父窗口接收 BN_CLICKED 通知代码。
  29.                         }!   
  30.                         {
  31.                                  set @@postmsg=%v2%;%wm_close%;0;0
  32.                         }
  33.                 }
  34.         }
  35. _end

复制代码



所有测试均录制成视频:
https://527104427.lanzout.com/b01n2a92ti
密码:c7kd









点评

//先 W=1024 TEAM$ date t1 uptime$ DISP W1366$ date t2 uptime$ calc t=%t2%-%t1%$ M SS %t1%--%t2% %t%ms OK // 135769576--135772508 2932ms OK  详情 回复 发表于 2024-5-26 22:03
回复

使用道具 举报

1204#
发表于 2024-5-26 22:46:42 | 显示全部楼层
mdyblog 发表于 2024-5-26 22:03
//先 W=1024
TEAM$ date t1 uptime$ DISP W1366$ date t2 uptime$ calc t=%t2%-%t1%$ MSS %t1%--%t2% %t ...


DISP W1366 是59毫秒

DISP W1366 H768 是15秒

















点评

试试 PECMD-disp.zip ,优化了下。 -wbrd 可能还能稍快点。 不等广播完。  详情 回复 发表于 2024-5-26 23:35
和系统有关。 开的窗口越多,越久。 如果有窗口卡死, 就更久了。 最多等15秒。  详情 回复 发表于 2024-5-26 23:21
回复

使用道具 举报

1205#
发表于 2024-5-27 11:21:14 | 显示全部楼层
本帖最后由 527104427 于 2024-5-27 11:30 编辑
mdyblog 发表于 2024-5-26 23:35
试试  PECMD-disp.zip ,优化了下。

-wbrd 可能还能稍快点。 不等广播完。


DISP W1366 h768 是256毫秒

DISP -wbrd W1366 h768 是347毫秒


















又测试了6遍 -wbrd 的情况:




测试6遍不带 -wbrd 的情况:




时间上都差不多,区别不大。








点评

看来优化有效呀。 都可以等待广播结束了。  详情 回复 发表于 2024-5-27 11:48
回复

使用道具 举报

1206#
发表于 2024-5-27 11:56:37 | 显示全部楼层
mdyblog 发表于 2024-5-27 11:48
看来优化有效呀。 都可以等待广播结束了。


show 貌似不能用汉字为盘符,这是说明书写错了,还是有bug?


点评

以前支持。 后来 需要攀附分配。 把 中文过滤了。 恢复了。PECMD-磁盘序列号-SHOW-CN.7z  详情 回复 发表于 2024-5-27 19:27
回复

使用道具 举报

1207#
发表于 2024-5-27 19:57:58 | 显示全部楼层
mdyblog 发表于 2024-5-27 19:27
以前支持。 后来 需要盘符分配。 把 中文过滤了。 恢复了。PECMD-磁盘序列号-SHOW-CN.7z




好了。











回复

使用道具 举报

1208#
发表于 2024-5-27 20:07:29 | 显示全部楼层
mdyblog 发表于 2024-5-27 19:27
以前支持。 后来 需要盘符分配。 把 中文过滤了。 恢复了。PECMD-磁盘序列号-SHOW-CN.7z

这个是 x 才对吧?










点评

PECMD-磁盘序列号-ShowCn-LISTFont.7z ┃ │ │PART [-devid[x|n|a]] list [磁盘],变量名 //-devid返回磁盘DevID,n:名称 ┃ ┃ │ │ n:型号和序列号 a:产品号 序列号 Version DeviceType Devi  详情 回复 发表于 2024-5-28 05:58
回复

使用道具 举报

1209#
发表于 2024-5-28 11:44:05 | 显示全部楼层
Anson4 发表于 2024-5-28 11:16
测试了一下,NvMe硬盘的序列号读取还是不正确,SATA的则没问题,都是本地硬盘。

SATA,正确。

看这里:
http://bbs.wuyou.net/forum.php?m ... 4424&fromuid=378114

从 STORAGE_DEVICE_DESCRIPTOR 获取的序列号要自己进行转换,里面有源码。不过貌似挺麻烦的。







回复

使用道具 举报

1210#
发表于 2024-5-28 11:52:40 | 显示全部楼层
本帖最后由 527104427 于 2024-5-28 11:53 编辑
mdyblog 发表于 2024-5-28 05:58
PECMD-磁盘序列号-ShowCn-LISTFont.7z
┃PART [-devid[x|n|a]] list   [磁盘],变量名  //-devid返回磁盘 ...


VendorId 怎么是一个括号?




我用API写了一段代码,经测试,win7大部分有VendorId,而win10大部分没有VendorId:

这是win7的:





这是win10的:




测试代码:
  1. //https://learn.microsoft.com/zh-cn/windows/win32/fileio/disk-management-control-codes
  2. //https://learn.microsoft.com/zh-cn/windows/win32/api/winioctl/ni-winioctl-ioctl_storage_query_property
  3. //https://learn.microsoft.com/zh-cn/windows/win32/api/winioctl/ns-winioctl-storage_property_query
  4. //https://blog.csdn.net/lengye7/article/details/122953234

  5. set^ EnviMode=1
  6. set^ ForceLocal=1
  7. set$ nl=0d 0a
  8. envi PartitionInformation=

  9. //set disk=\\?\STORAGE#Volume#{bd7e99c2-72f8-11ed-b079-806e6f6e6963}#0000000000100000#{7f108a28-9833-4b3b-b780-2c6b5fa5c062}  //检索设备接口路径
  10. //set disk=\\?\scsi#disk&ven_st2000dm&prod_001-1ch164#4&15828421&0&030000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}  //检索设备接口路径
  11. //set disk=\\?\scsi#disk&ven_samsung&prod_ssd_850_evo_500g#4&15828421&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}  //检索设备接口路径
  12. //set disk=\\.\Volume{e1d1e74e-4d47-11ed-aa55-806e6f6e6963}     //检索卷
  13. //set disk=\\.\HarddiskVolume2       //检索 MS-DOS 设备
  14. set disk=\\.\PhysicalDrive0        //检索磁盘
  15. //set disk=\\.\Harddisk0Partition1   //检索分区
  16. //set disk=\\.\GLOBALROOT\device\Harddisk0\Partition1   //检索分区
  17. //set disk=\\.\C:   //检索 C 盘

  18. set generic_read=0x80000000
  19. set file_share_read=0x00000001
  20. set file_share_write=0x00000002
  21. calc dwShareMode=%file_share_read% | %file_share_write%
  22. set open_existing=3
  23. set file_attribute_normal=0x00000080
  24. call $--qd --ret:h Kernel32.dll,CreateFileW,$%disk%,#%generic_read%,#%dwShareMode%,#0,#%open_existing%,#%file_attribute_normal%,#0  //如果函数成功,则返回值是指定文件、设备、命名管道或邮件槽的打开句柄。如果函数失败,则返回值为 INVALID_HANDLE_VALUE (-1)。 要获得更多的错误信息,请调用 GetLastError。
  25. ifex $%h%<>-1,
  26. {
  27.         set ioctl_storage_base=0x0000002d
  28.         set Function=0x0500
  29.         set method_buffered=0
  30.         set file_any_access=0
  31.         calc ioctl_storage_query_property=shl(%ioctl_storage_base%,16) | shl(%file_any_access%,14) | shl(%Function%,2) | %method_buffered%    //0x2D1400

  32.         set nInBufferSize=0xC  //结构体 storage_property_query 的长度
  33.         set$# lpInBuffer=*%nInBufferSize% 0
  34.         set-long PropertyId=0  //由 storage_property_id 枚举的 StorageDeviceProperty 值,指示调用方是请求设备描述符、适配器描述符、写入缓存属性、设备唯一 ID (DUID) ,还是设备 SCSI 重要产品数据 (VPD) 页中提供的设备标识符。
  35.         set-long QueryType=0   //由 storage_query_type 枚举的 PropertyStandardQuery 值,要查询类型的标志
  36.         set-long AdditionalParameters=0  //包含可用于检索特定查询的其他参数的字节数组
  37.         set-copy lpInBuffer=PropertyId;0;4;0
  38.         set-copy lpInBuffer=QueryType;0;4;4
  39.         set-copy lpInBuffer=AdditionalParameters;0;4;(4 + 4)

  40.         ifex $%::bX64%<3, set lpdword=4! set lpdword=8   //%&::bX64%=0, PECMD32+Win32  //%&::bX64%=1, PECMD32+WIN64  //%&::bX64%=3, PECMD64+WIN64
  41.         calc nOutBufferSize=0x28 + 1K  //结构体 storage_device_descriptor 的长度
  42.         set$# lpOutBuffer=*%nOutBufferSize% 0
  43.         set$# lpBytesReturned=*%lpdword% 0  //LPDWORD 实际就是DWORD类型,int
  44.         call $--qd --ret:RetDeviceIoControl Kernel32.dll,DeviceIoControl,#%h%,#%ioctl_storage_query_property%,*lpInBuffer,#%nInBufferSize%,*lpOutBuffer,#%nOutBufferSize%,*lpBytesReturned,#0  //如果操作成功完成,则返回值为非零 (TRUE) 。如果操作失败或挂起,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
  45.         call $--qd --bool --ret:RetCloseHandle Kernel32.dll,CloseHandle,#%h%  //如果函数成功,则返回值为非零值。如果函数失败,则返回值为零。若要获取扩展的错误信息,请调用 GetLastError。如果应用程序在调试器下运行,则函数在收到无效的句柄值或伪句柄值时将引发异常。如果关闭句柄两次,或者对 FindFirstFile 函数返回的句柄调用 CloseHandle,而不是调用 FindClose 函数,则可能会发生这种情况。
  46.         ifex $%RetDeviceIoControl%<>0,
  47.         {
  48.                 //结构体 storage_device_descriptor
  49.                 set?int lpOutBuffer=Version:0
  50.                 set?int lpOutBuffer=Size:4
  51.                 set?char lpOutBuffer=DeviceType:(4 + 4)
  52.                 set?char lpOutBuffer=DeviceTypeModifier:(4 + 4 + 1)
  53.                 set?char lpOutBuffer=RemovableMedia:(4 + 4 + 1 + 1)
  54.                 set?char lpOutBuffer=CommandQueueing:(4 + 4 + 1 + 1 + 1)
  55.                 set?int lpOutBuffer=VendorIdOffset:(4 + 4 + 1 + 1 + 1 + 1)
  56.                 set?int lpOutBuffer=ProductIdOffset:(4 + 4 + 1 + 1 + 1 + 1 + 4)
  57.                 set?int lpOutBuffer=ProductRevisionOffset:(4 + 4 + 1 + 1 + 1 + 1 + 4 + 4)
  58.                 set?int lpOutBuffer=SerialNumberOffset:(4 + 4 + 1 + 1 + 1 + 1 + 4 + 4 + 4)
  59.                 set?int lpOutBuffer=BusType:(4 + 4 + 1 + 1 + 1 + 1 + 4 + 4 + 4 + 4)
  60.                 set?int lpOutBuffer=RawPropertiesLength:(4 + 4 + 1 + 1 + 1 + 1 + 4 + 4 + 4 + 4 + 4)
  61.                 call GetBusType BusType
  62.                 call GetStr VendorId %VendorIdOffset%
  63.                 call GetStr ProductId %ProductIdOffset%
  64.                 call GetStr ProductRevision %ProductRevisionOffset%
  65.                 call GetStr SerialNumber %SerialNumberOffset%

  66.                 set PartitionInformation=
  67.                         \%nl%Version: %Version%
  68.                         \%nl%Size: %Size%   //%lpOutBuffer?long:4%  //%lpOutBuffer?int:4% 这个表示法有问题,把int当成char了
  69.                         \%nl%DeviceType: %DeviceType%
  70.                         \%nl%DeviceTypeModifier: %DeviceTypeModifier%
  71.                         \%nl%RemovableMedia: %RemovableMedia%
  72.                         \%nl%CommandQueueing: %CommandQueueing%
  73.                         \%nl%VendorIdOffset: %VendorIdOffset%
  74.                         \%nl%ProductIdOffset: %ProductIdOffset%
  75.                         \%nl%ProductRevisionOffset: %ProductRevisionOffset%
  76.                         \%nl%SerialNumberOffset: %SerialNumberOffset%
  77.                         \%nl%BusType: %BusType%
  78.                         \%nl%RawPropertiesLength: %RawPropertiesLength%
  79.                         \%nl%VendorId: %VendorId%
  80.                         \%nl%ProductId: %ProductId%
  81.                         \%nl%ProductRevision: %ProductRevision%
  82.                         \%nl%SerialNumber: %SerialNumber%
  83.         }
  84. }
  85. find *=PartitionInformation, mess=+icon6. 检索失败!@错误#ok*3000! mess. %PartitionInformation%
  86. exit

  87. _sub GetStr
  88.         envi szId=
  89.         ifex $%~2>0,
  90.         {
  91.                 set-make lpHex=&lpOutBuffer@%~2;*(%Size% - %~2)
  92.                 code **ansi,lpHex,**uni,szId
  93.         }
  94.         set-ret %~1=%szId%
  95. _end

  96. _sub GetBusType
  97.         ^ifex $%%%~1%%=0x00, team set-ret< %~1= (BusTypeUnknown) (Unknown)| exit    //未知总线类型。
  98.         ^ifex $%%%~1%%=0x01, team set-ret< %~1= (BusTypeScsi) (SCSI)| exit    //SCSI 总线。
  99.         ^ifex $%%%~1%%=0x02, team set-ret< %~1= (BusTypeAtapi) (ATAPI)| exit    //ATAPI 总线。
  100.         ^ifex $%%%~1%%=0x03, team set-ret< %~1= (BusTypeAta) (ATA)| exit    //ATA 总线。
  101.         ^ifex $%%%~1%%=0x04, team set-ret< %~1= (BusType1394) (1394)| exit    //IEEE-1394 总线。
  102.         ^ifex $%%%~1%%=0x05, team set-ret< %~1= (BusTypeSsa) (SSA)| exit    //SSA 总线。
  103.         ^ifex $%%%~1%%=0x06, team set-ret< %~1= (BusTypeFibre) (Fibre Channel)| exit    //光纤通道总线。
  104.         ^ifex $%%%~1%%=0x07, team set-ret< %~1= (BusTypeUsb) (USB)| exit    //USB 总线。
  105.         ^ifex $%%%~1%%=0x08, team set-ret< %~1= (BusTypeRAID) (RAID)| exit    //RAID 总线。
  106.         ^ifex $%%%~1%%=0x09, team set-ret< %~1= (BusTypeiScsi) (iSCSI)| exit
  107.         ^ifex $%%%~1%%=0x0A, team set-ret< %~1= (BusTypeSas) (SAS)| exit    //串行附加的 SCSI (SAS) 总线。Windows Server 2003: 在 Windows Server 2003 SP1 之前不支持此功能。
  108.         ^ifex $%%%~1%%=0x0B, team set-ret< %~1= (BusTypeSata) (SATA)| exit    //SATA 总线。Windows Server 2003: 在 Windows Server 2003 SP1 之前不支持此功能。
  109.         ^ifex $%%%~1%%=0x0C, team set-ret< %~1= (BusTypeSd) (SD)| exit
  110.         ^ifex $%%%~1%%=0x0D, team set-ret< %~1= (BusTypeMmc) (MMC)| exit
  111.         ^ifex $%%%~1%%=0x0E, team set-ret< %~1= (BusTypeVirtual) (Virtual)| exit
  112.         ^ifex $%%%~1%%=0x0F, team set-ret< %~1= (BusTypeFileBackedVirtual) (File Backed Virtual)| exit
  113.         ^ifex $%%%~1%%=0x10, team set-ret< %~1= (BusTypeSpaces) (Storage Spaces)| exit
  114.         ^ifex $%%%~1%%=0x11, team set-ret< %~1= (BusTypeNvme) (Nvme)| exit
  115.         ^ifex $%%%~1%%=0x12, team set-ret< %~1= (BusTypeSCM) (SCM)| exit
  116.         ^ifex $%%%~1%%=0x13, team set-ret< %~1= (BusTypeUfs) (Ufs)| exit
  117.         ^ifex $%%%~1%%=0x14, team set-ret< %~1= (BusTypeMax) (MAX)| exit
  118.         ^ifex $%%%~1%%=0x7F, team set-ret< %~1= (BusTypeMaxReserved) (Microsoft Reserved)| exit
  119. _end








复制代码


点评

这个应该是没有。 新版 PECMD-磁盘序列号-ShowCn-LISTFont2.7z 修正了  详情 回复 发表于 2024-5-28 16:06
回复

使用道具 举报

1211#
发表于 2024-5-28 23:05:24 | 显示全部楼层
mdyblog 发表于 2024-5-28 21:48
渐透明 支持。 光滑圆角。

效果:



好像不太对劲,win10测试。





点评

最新版 PECMD H3 WIn10x64效果: [attachimg]542284[/attachimg]  详情 回复 发表于 2024-5-28 23:22
回复

使用道具 举报

1212#
发表于 2024-5-29 11:18:35 | 显示全部楼层
liangnijian 发表于 2024-5-29 10:07
反馈个问题:用 PECMD-磁盘序列号-devidA.7z 这个版本的TABL 0x400带打勾器 这个打勾器显示有问题。PECMD20 ...

TABL -cksz:21



点评

TABL -cksz:21也没看出差别呀?: [attachimg]542306[/attachimg]  详情 回复 发表于 2024-5-29 11:35
学习了  详情 回复 发表于 2024-5-29 11:24
回复

使用道具 举报

1213#
发表于 2024-5-29 12:05:19 | 显示全部楼层
mdyblog 发表于 2024-5-29 11:35
TABL -cksz:21也没看出差别呀?:

他原来的代码没有-cksz,打勾器显示不出来,估计是tabl进化之前的代码。
也许m大应该兼容一下旧代码,没有指定打勾器大小时也能正常显示。
回复

使用道具 举报

1214#
发表于 2024-5-29 12:13:23 | 显示全部楼层
mdyblog 发表于 2024-5-29 11:35
TABL -cksz:21也没看出差别呀?:

我简化了一下代码:

set$ tab=09
set$ nl=0d 0a
CALL PE
EXIT

_SUB PE,W610H360,,,,,,
        TABL -font:10:::::::::(12*2) TABL1,L10T60W460H264,+50:%TAB%330:%TAB%+55:,aaa%nl%bbb,0x82400
_END


点评

PECMD-磁盘序列号-ShowCn-LISTFont5渐透明.7z  详情 回复 发表于 2024-5-29 12:43
回复

使用道具 举报

1215#
发表于 2024-5-29 19:23:31 | 显示全部楼层
mdyblog 发表于 2024-5-29 15:02
sl 指定分行符
sc指定分列符



这有两个  -sc


回复

使用道具 举报

1216#
发表于 2024-5-29 19:41:02 | 显示全部楼层
泮安宁 发表于 2024-5-29 19:34
这个用法说明书上貌似也没有



这是在单元格里分行、分列的意思:


点评

好的  详情 回复 发表于 2024-5-29 20:13
回复

使用道具 举报

1217#
发表于 2024-5-30 08:21:49 | 显示全部楼层


点击BROW跳转失败:









回复

使用道具 举报

1218#
发表于 2024-5-30 19:47:19 | 显示全部楼层
泮安宁 发表于 2024-5-30 17:06
不行啊,当TABL与窗口一样大时,并且TABL列宽总和大于TABL的宽,有数据水平滚动条也不显示
测试当SUB的 ...

1.窗口的标题栏你没算上吧?窗口标题栏高度+tabl 高度=窗口高度
2.给tabl 设置一个渐变度,就能将标头区分开了。

  1. ENVI$ &SL=0C  //分行
  2. ENVI$ &SC=0B  //分列
  3. ENVI$ &NL=0d 0a
  4. ENVI$ &NLa=0a
  5. ENVI$ &NL1=0a
  6. ENVI$ &TAB=09
  7. CALL @WIN1
  8. _SUB WIN1,W800H500,,,,,,-scale:%&LOGPIXELSX%
  9.     TABL -sl:%&SL% -sc:%&SC% -cksz:20 -hfont:12:**B -font:10::-50:0xFFFFFF:0.1:::::40 TABL1,L0T0W800H467,200:1%&SC%200:2%&SC%600:3%&SC%,0,0x400
  10.     ENVI @TABL1.val=-1
  11. _END
复制代码

点评

确实没算标题栏  详情 回复 发表于 2024-5-30 20:39
跑到川口外面去了。 窗口太小。 你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。 加个 -cisze , 所给 大小不包含 边框。 边框另算。 效果: [attachimg]542438[/attachimg]  详情 回复 发表于 2024-5-30 20:17
回复

使用道具 举报

1219#
发表于 2024-5-30 20:23:00 | 显示全部楼层
mdyblog 发表于 2024-5-30 20:17
跑到川口外面去了。 窗口太小。
你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。
加个 -cisze ...

哦,原来加上-csize就一劳永逸了

点评

对的。 方便。  详情 回复 发表于 2024-5-30 20:39
回复

使用道具 举报

1220#
发表于 6 天前 | 显示全部楼层
hhh333 发表于 2024-6-3 08:10
这么定义更加不好理解,我觉得还是把1:1,2:2,3:1看成一个整体比较好,譬如
1111
2222

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

点评

是的,SED 2:-2,两个2就是为了反向代替两次?与SED 2:2,代替两次跳过两次不同了  详情 回复 发表于 6 天前
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-9 12:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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