无忧启动论坛

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

[原创] 单文件制作程序 v7.0.0.9

    [复制链接]
1#
发表于 2020-3-15 12:58:11 来自手机 | 显示全部楼层
好工具!能在运行前运行一些命令,这个好
回复

使用道具 举报

2#
发表于 2020-3-15 12:58:14 来自手机 | 显示全部楼层
好工具!能在运行前运行一些命令,这个好
回复

使用道具 举报

3#
发表于 2020-4-27 13:18:17 | 显示全部楼层
bet365 发表于 2020-4-25 02:54
PE 下仍然不行,算了,放弃吧,还是用散装版的,不用单文件版了。奇怪了,其他用这个单文件制作程序 ...

不要使用PECMD压缩,内核选择7zSFX试试
回复

使用道具 举报

4#
发表于 2020-4-27 13:45:58 | 显示全部楼层
bet365 发表于 2020-4-27 01:21
还有一个问题为什么我的PECMD 是 2018年的
论坛都是2012年的,并且这个PECMD都是英文
没有汉化版的。看了 ...

你看错了,论坛上最新的 是2020-4-20的,显示倒是2018年的。

点评

兄弟,直接给个链接吧,哪里有2020的PECMD,感觉都是2012年的。  详情 回复 发表于 2020-4-27 23:45
回复

使用道具 举报

5#
发表于 2020-4-28 22:11:16 | 显示全部楼层
bet365 发表于 2020-4-27 23:45
兄弟,直接给个链接吧,哪里有2020的PECMD,感觉都是2012年的。

置顶就有M大的帖子嘛。
下载最新的PECMD,这是地址:
https://www.lanzous.com/b279972/

点评

问题M大的帖子里,看不出哪个是最新的,我先下载你提供的把  详情 回复 发表于 2020-4-28 22:12
回复

使用道具 举报

6#
发表于 2020-4-28 22:15:13 | 显示全部楼层
bet365 发表于 2020-4-28 22:12
问题M大的帖子里,看不出哪个是最新的,我先下载你提供的把

你没仔细看。这就是M大帖子里的链接。

当然,无可否认的是,M大技术绝对是大神中的大神,然而组织语言方面要属九流了,哈哈

点评

你看他,PECMD写了个2012,人家是不是以为是以前的,也不说明一下。真够晕的。谢谢兄弟了。  详情 回复 发表于 2020-4-28 22:19
回复

使用道具 举报

7#
发表于 2020-4-28 22:27:22 | 显示全部楼层
bet365 发表于 2020-4-28 22:19
你看他,PECMD写了个2012,人家是不是以为是以前的,也不说明一下。真够晕的。谢谢兄弟了。

嗯嗯,我们都要感谢M大,到现在还在利用业余时间更新这个,佩服的五体投地!

当初,M大出来更新PECMD的时候,好多人都发愣,以为是开玩笑的,后来都被折服了。
窃以为,M大这种天才级别的,语言组织混乱实属正常,因为他的好多逻辑之所以不被我等常人理解,是因为有的时候某些中间环节直接被他忽略或者跳过去了,而我们不知,嘿嘿
回复

使用道具 举报

8#
发表于 2020-5-6 00:31:09 | 显示全部楼层
呃5大这是要抽身了?
回复

使用道具 举报

9#
发表于 2020-5-9 23:42:51 | 显示全部楼层
527104427 发表于 2020-5-9 19:23
点“插入”,“pecmd脚本”,然后尽情发挥吧……

5大的私货能再分享吗?

点评

清空了,不玩了  详情 回复 发表于 2020-5-10 08:42
回复

使用道具 举报

10#
发表于 2020-5-17 17:23:58 | 显示全部楼层
本帖最后由 9001 于 2020-5-17 17:25 编辑
5大PECMD玩得这么溜,不玩可惜了。
请教一下怎么用PECMD实现下面功能:
想要随机产生1-20中的数字,每计时30分钟产生一个随机数后输出到当前目录下1.txt中,每行一个数字。要求:1、已产生的随机数不能在后续过程中出现。2、1-100全部产生一个循环后,重新开始新循环计时随机数。

再一个是如果不计时,定义热键F1,每按一下产生一个随机数,其它要求同上,又该如何实现?

点评

pecmd只能产生一串随机数,那就是%random% 貌似不能指定范围 况且还要判断有没有重复,复杂了,还是直说你想做什么程序吧,全套用pecmd来做  详情 回复 发表于 2020-5-17 19:02
回复

使用道具 举报

11#
发表于 2020-5-17 23:07:35 | 显示全部楼层
527104427 发表于 2020-5-17 19:02
pecmd只能产生一串随机数,那就是%random%
貌似不能指定范围
况且还要判断有没有重复,复杂了,还是直 ...

原来5大就在身边,从未走远。
我是想实现两个应用。
一个是论坛PE中的开机换屏,那就是加载了一次flash.wcs:
  1. CALC #RanPic=RAND(24)
  2. set FlashPic=Logo%RanPic%.jpg
  3. wall %CurDir%\%FlashPic%
复制代码

定义热键load flash.wcs就切换一次。
这个RAND(24)产生0-23的随机整数。不知道从哪里来的,反正在PECMD说明里没见到。
我想能否利用这个命令产生不同的随机数,直到穷尽0-23所有的数字才重新再来一遍。
加上计时器,是希望驻留内存定时产生一个随机数。

第二个应用,是我们这里要开一个专业技能接力比赛,三个科目,AB两组都是10人,A1-A10,B1-B10。
每次需要抽取AB两队各一人比赛第一个科目,然后两队再各抽取一人继续比第一科目,直到两队所有人都完成第一科目比赛。
之后,是第二、三科目接力比赛。
比赛是提前5分钟抽取号码,5分钟后开始比赛;第一次抽取号码后20分钟后抽取第二组号码进行准备,再过5分钟后上场比赛,以此类推,直到十组比赛历时205分钟结束。然后是第二、三科目比赛。
这个就是随机选择对手,接力完成三轮比赛。

我是今天看到上面那个RAND命令后想到有可能实现比赛抽签,不过对PECMD命令实在不懂,不知道5大能否帮着实现不?

点评

我也是菜鸟,掌握的PECMD知识仅仅为冰山一角。 如下代码,橙色部分为热键操作,绿色部分为计时器,30分钟=1800000毫秒。 照搬全部代码,为第一个应用。 去掉红色注释斜杠(3处),将蓝色20改为100(两处),此为  详情 回复 发表于 2020-5-18 00:38
回复

使用道具 举报

12#
发表于 2020-5-18 09:24:05 | 显示全部楼层
527104427 发表于 2020-5-18 00:38
我也是菜鸟,掌握的PECMD知识仅仅为冰山一角。
如下代码,橙色部分为热键操作,绿色部分为计时器,30分 ...

感谢5大半夜加工代码!
先试了第一个应用。
如果整个代码只改变1800000,让它变短为10000,其它保持不变,单独执行它后,可以观察到确实随机生成1-20这20个数且每次不重复,累计20次后重新开始。
问题是:
1、保存代码为flashpic.wcs,如果在启动explorer之前加载,则进入不了桌面,黑屏,需要手动启动shell。
2、如果把它放到pecmd.ini中的最后加载,可正常进入桌面。但有个别情况下会发现桌面图标点击哪个就像按住Ctrl附加选中一样。刷新shell后解除。
估计上面两个问题是一个问题,是否环境变量影响到了启动过程?

点评

换最新的pecmd试试。 调用改成exec -incmd pecmd load "%curdir%\flash.wcs"  详情 回复 发表于 2020-5-18 09:35
回复

使用道具 举报

13#
发表于 2020-5-18 09:33:46 | 显示全部楼层
另外,如果想要开机启动这段代码,让它随机wall一张图,然后暂停,等待下一次按F1随机换图,20张图在20次内全部换一遍后开始重新开始。应该怎么搞?
回复

使用道具 举报

14#
发表于 2020-5-18 11:54:00 | 显示全部楼层
本帖最后由 9001 于 2020-5-18 14:54 编辑
因为PECMD常用的命令都是看pecmd.ini、petool.ini、pesoft.ini之类的配置文件知道其大致用法。但大量的用法需要查帮助文件。自带的帮助显然很不全面,所以看5大的代码就一头雾水。

是我用的PECMD为精简版,里面带的帮助文件也被阉割了。如果要学习PECMD用法,请使用完整版的PECMD。或者下载这个帮助文件:

HELP0.TXT (391.84 KB, 下载次数: 7)


我查询帮助,试着学习5大的代码,顺便请5大解释答疑
估计有人愿意跟着5大学习学习。

//我看5大程序经常这样代码开头,有什么作用?答:设置语言代码,简繁自适应。
#code=936T950

//下面这两句设置PE模式与变量继承,是否影响了PE加载启动shell?答:其它脚本变量会相互影响,使用exec -incmd pecmd load "%curdir%\flash.wcs"另开一个干净的进程加载,没有乱七八糟的问题。
ENVI^ EnviMode=1
ENVI^ ForceLocal=1

// FILE命令帮助中没有-force参数,是强制删除
FILE -force "%&CurDir%\1.txt"

//@前导调用子过程窗口
CALL @autoWALL

//窗口名后面这个#是什么意思?答:#表示隐藏窗口。

_SUB autoWALL,#

//定时器清零初始化,准备调用计算随机数子过程CalcRand
//加个&前导标志起什么作用?答:&表示pe变量,与cmd的环境变量有区别,加&更高级,b格更高
//周期数值大于0表示定时器即刻工作,数值为0时表示定时器暂停工作。
        TIME &Timer,0, CALL CalcRand

//LIST命令在_SUB定义的窗口内建立一个下拉列表框
//在屏幕左上角建立一个下拉表框,缩小为一个点,隐藏

//可否R0T0W0H0在右上角搞一隐藏点?

        LIST &NumCount,L0T0W0H0,,,,0x10

//调用生成随机数子过程

        CALL CalcRand
_END

_SUB CalcRand
//"@"表示设置窗口控件的名称
        ENVI @&Timer=0

//热键F1,--del是清除什么的?清除F1热键定义
        HKEY$ #112, --del

//设置两个变量?答:NumCount.Query确定下拉列表存放20个数据
//Total开始没赋值?所以还是一样赋值20?
        ENVI @&NumCount.Query=20;&Total

//这个判断说明Total被赋值了
        IFEX $%&Total%>0,
        {
//计数20次之后将 NumCount列表中的数据清空重来
                ENVI @&NumCount.Val=

//PUTF命令产生CurDir%\1.txt这个空文件,暂无数据。
                //PUTF -dd -len=0  "%&CurDir%\1.txt",0,zero
        }

//前导符'#'表示进行整数变量比较,提高效率;'$'表示进行字符串变量比较(不区分大小写)
//首次运行直接进入循环
//Loop循环的意义,在于判断如果产生了已经产生过的随机数,那么就继续循环,直到产生未记录的随机数。

        LOOP #1=1,
        {*
//CALC命令中,前导"#" 表示所有变量按 int64 型数据来处理,省略或$表示按double型数据来处理
//产生0-19随机整数RandNum

                CALC #&RandNum=RAND(20)

//随机数自加1,是为了最后生成的随机为1-20
                CALC #&RandNum=%&RandNum%+1

//产生的这个随机数暂存于NumCount.SEL当前计数列表中
                ENVI @&NumCount.SEL=%&RandNum%

//<>为不等于。首次运行NumCount中未记录这个随机数,要进入判断体进行添加记录。
                IFEX $%&RandNum%<>%&NumCount%,
                {

//产生随机数添加到NumCount列表
                        ENVI @&NumCount.ADD=%&RandNum%

//切换一次壁纸
                        WALL %&CurDir%\Logo%&RandNum%.jpg

//记录这个随机数到当前目录下1.txt中,完毕换行
                        //WRIT "%&CurDir%\1.txt",$+0,%&RandNum%

//设置定时长度,1秒为1000。此处为30分钟1800000
                        ENVI @&Timer=1800000

//重新设置热键F1,定时器长度为1。用于按下F1后立即结束定时
                        HKEY$ #112, ENVI @&Timer=1
                        EXIT
                }
        }
_END

主要问题有4个:
1、NumCount.SEL NumCount.ADD NumCount.Query NumCount.Val与NumCount的关系是怎样的。
5大提示,查阅完整版帮助,可知道前面4个都是针对NumCount进行操作的。
  1. ※ENVI @下拉列表框名称.QUERY=行号
  2. ※ENVI @下拉列表框名称.ADD=新增加的条目
  3. ※ENVI @下拉列表框名称.SEL=选择的条目
  4. ※ENVI @下拉列表框名称.VAL=重置多个新增加的条目  //|分隔 ;原来的被清除
复制代码

2、计时器窗口在计时结束后是否没有自动消失?即它仍然存在,只是归零暂停?
  1. TIME &Timer,0, CALL CalcRand
  2. LIST &NumCount,L0T0W0H0,,,,0x10
  3. CALL CalcRand
复制代码
上面这段前两句是不是计时窗口放在那里,等待调用CalcRand?
而第三句才是在其本身的过程体中启动了计时器,这样理解对吗?

3、EXIT是跳出了Loop循环,转而回到子过程CalcRand结束,但由于计时器的存在,1800000=30分钟的周期数值>0,计时器又开始工作:第二、三...N次调用CalcRand。我的问题是,这30分钟的周期是怎么耗尽的?按TIME的语法,貌似设置了1800000后就开始计算随机数,它这个用时很少就完成了计算成换屏,然后就是重新设置计数时间。这期间应该耗时很短,这点令人费解。

4、怎么没看到Total后续运算?它是每次-1计数?减到0的时候NumCount.Val清空,重新添加新的随机数?

点评

解答疑问: ENVI @&Timer=1800000 ,意思是1800000后运行命令,不是立即执行CalcRand[/backcolor]。1800000是计时器周期,不是CalcRand[/backcolor]运行时长,你应该是搞混了。_SUB CalcRand 第一句是 ENVI @&T  详情 回复 发表于 2020-5-18 20:00
回复

使用道具 举报

15#
发表于 2020-5-18 11:55:53 | 显示全部楼层
527104427 发表于 2020-5-18 09:35
换最新的pecmd试试。
调用改成exec -incmd pecmd load "%curdir%\flash.wcs"

好,我试试。刚才在查询PECMD命令,学习学习。
请5大看看下面我的注释,帮着解惑一番

点评

exec -incmd pecmd load "%curdir%\flash.wcs" 另开一个干净的进程加载,不受其它脚本变量影响。没有乱七八糟的问题。 第一句是设置语言代码,简繁自适应。 _sub后面的#表示隐藏窗口。 &表示pe变量,与cmd的环  详情 回复 发表于 2020-5-18 12:33
回复

使用道具 举报

16#
发表于 2020-5-18 13:44:51 | 显示全部楼层
527104427 发表于 2020-5-18 12:33
exec -incmd pecmd load "%curdir%\flash.wcs"
另开一个干净的进程加载,不受其它脚本变量影响。没有乱 ...
exec -incmd pecmd load "%curdir%\flash.wcs"
另开一个干净的进程加载,不受其它脚本变量影响。没有乱七八糟的问题。

果然好用!
这下无论SHELL是否加载都正常了。

list是一个存储器

才注意到NumCount是list命令定义的。

对于5大来说都太基础,但对于没怎么学过编程的小白来说就难以理解,因为有此疑问在帮助里找不到答案,5大你这博导级别的就当科普了吧,哈哈
  1. ENVI @&NumCount.Query=20;&Total
复制代码

这个NumCount.Query确定了20个下拉列表,存放数据。那么Total是指空闲的列表个数?
另外,NumCount.Query 、Total以及下面的NumCount.add .sel  .val这都是随便自定义的还是系统内部默认的?


点评

pecmd帮助界面,跳转到list,有详尽解释。 query 后面有行数,则查改行内容,没行数则查所有数据。 add 新增一行 sel 选中 val 重置所有  详情 回复 发表于 2020-5-18 14:24
回复

使用道具 举报

17#
发表于 2020-5-18 14:36:48 | 显示全部楼层
本帖最后由 9001 于 2020-5-18 15:02 编辑
527104427 发表于 2020-5-18 14:24
pecmd帮助界面,跳转到list,有详尽解释。
query 后面有行数,则查该行内容,没行数则查所有数据。
add ...
看过了,原来我用的都是精简版,怪不得找不到详细的说明。





精简不精简说明真有差距啊。实际上差0.08M没多少空间嘛

回复

使用道具 举报

18#
发表于 2020-5-18 15:16:07 | 显示全部楼层
本帖最后由 9001 于 2020-5-18 15:17 编辑
527104427 发表于 2020-5-18 14:24
pecmd帮助界面,跳转到list,有详尽解释。
query 后面有行数,则查该行内容,没行数则查所有数据。
add ...

5大,第二个应用达不到效果啊,只是产生了100以内的不同数字。

他要求是两队接力赛,每轮对两支队伍排定出场顺序,两队接力出场完毕为一轮。
也就是分别产生两个序列,每个序列10个不同的数。
这个可以模拟计时器周期1秒,瞬间产生。
比如两个队,每队三人,随机三轮接力赛赛程安排:
第一轮:
甲  乙
1    3
3    2
2    1
第二轮:
甲  乙
3    3
1    2
2    1
第三轮:
甲  乙
1    2
3    1
2    3

1.txt出类似这样的结果

点评

第一个问题: #code=936T950 ENVI^ EnviMode=1 ENVI^ ForceLocal=1 CALL @autoWALL _SUB autoWALL,# TIME &Timer,0, CALL CalcRand EDIT &FirstTime,L0T0W0H0,,,0x18 LIST &N  详情 回复 发表于 2020-5-18 19:50
这下你练手的机会来了,依葫芦画瓢嘛,加个list,生成随机数字用两组,判断用两次,so easy 实在不行等晚点我再弄吧  详情 回复 发表于 2020-5-18 15:32
回复

使用道具 举报

19#
发表于 2020-5-19 01:30:57 | 显示全部楼层

感谢5大!(❁′ω`❁)

应用二 5大的代码实现了主要功能,问题一是没能在第三次停下来,二是每一轮都清空,导致实际输出只有第三轮抽签有结果。

点评

[attachimg]457102[/attachimg] [code]#code=936T950 ENVI^ EnviMode=1 ENVI^ ForceLocal=1 FILE -force "%&CurDir%\11.txt" PUTF -dd -len=0 "%&CurDir%\11.txt",0,zero CALC #&i=1+0 WRIT "%&CurDir%\11  详情 回复 发表于 2020-5-19 01:35
回复

使用道具 举报

20#
发表于 2020-5-19 01:35:57 | 显示全部楼层
本帖最后由 9001 于 2020-5-19 01:38 编辑
9001 发表于 2020-5-19 01:30
感谢5大!(❁′ω`❁)

应用二 5大的代码实现了主要功能,问题一是没能在第三次停下来,二 ...


  1. #code=936T950
  2. ENVI^ EnviMode=1
  3. ENVI^ ForceLocal=1
  4. FILE -force "%&CurDir%\11.txt"
  5. PUTF -dd -len=0  "%&CurDir%\11.txt",0,zero
  6. CALC #&i=1+0
  7. WRIT "%&CurDir%\11.txt",$+0, 第%&i%轮:
  8. CALL @autoWALL

  9. _SUB autoWALL,#

  10.         TIME &Timer,0, CALL CalcRand
  11.         LIST &NumCountA,L0T0W0H0,,,,0x10
  12.         LIST &NumCountB,L0T0W0H0,,,,0x10
  13.         CALL CalcRand
  14. _END

  15. _SUB CalcRand
  16.         ENVI @&Timer=0
  17.         HKEY$ #114, --del
  18.         ENVI @&NumCountA.Query=10;&Total
  19.         IFEX $%&Total%>0,
  20.         {
  21.                                 CALC #&i=%&i%+1
  22.                                 IFEX $%&i%<4,WRIT "%&CurDir%\11.txt",$+0, 第%&i%轮:
  23.                                 IFEX $%&i%=4,
  24.                                 {
  25.                                         WRIT "%&CurDir%\11.txt",$+0,A队  B队
  26.                                         EXIT
  27.                                 }
  28.                                
  29.                 ENVI @&NumCountA.Val=
  30.                 ENVI @&NumCountB.Val=

  31.         }
  32.         LOOP #1=1,
  33.         {
  34.                 CALC #&RandNumA=RAND(10)
  35.                 CALC #&RandNumA=%&RandNumA%+1
  36.                 ENVI @&NumCountA.SEL=%&RandNumA%
  37.                 IFEX $%&RandNumA%<>%&NumCountA%,
  38.                 {
  39.                         ENVI @&NumCountA.ADDSEL=%&RandNumA%
  40.                         EXIT
  41.                 }
  42.         }
  43.         LOOP #1=1,
  44.         {
  45.                 CALC #&RandNumB=RAND(10)
  46.                 CALC #&RandNumB=%&RandNumB%+1
  47.                 ENVI @&NumCountB.SEL=%&RandNumB%
  48.                 IFEX $%&RandNumB%<>%&NumCountB%,
  49.                 {
  50.                         ENVI @&NumCountB.ADDSEL=%&RandNumB%
  51.                         WRIT "%&CurDir%\11.txt",$+0,%&NumCountA%    %&NumCountB%
  52.                         ENVI @&Timer=1000
  53.                         HKEY$ #114, ENVI @&Timer=1
  54.                         EXIT
  55.                 }
  56.         }
  57. _END
复制代码

点评

不错!按你的要求重新弄了一下,3轮抽完退出程序。 #code=936T950 ENVI^ EnviMode=1 ENVI^ ForceLocal=1 SET$ &NL=0D 0A WRIT *c "%&CurDir%\11.txt",$+0,A队 B队%&NL%%&NL% 第1轮: CALL @autoWALL _SUB  详情 回复 发表于 2020-5-19 08:11
回复

使用道具 举报

21#
发表于 2020-5-19 08:42:58 来自手机 | 显示全部楼层
本帖最后由 9001 于 2020-5-19 10:06 编辑
527104427 发表于 2020-5-19 08:11
不错!按你的要求重新弄了一下,3轮抽完退出程序。

#code=936T950

好了!如果加个判断,当A当前值为10时,输出AB两值之间少个空格就更完美了。

那个机器没有注册运行wcs,不过出现提示也是头一次见


回复

使用道具 举报

22#
发表于 2020-5-19 11:13:04 | 显示全部楼层
本帖最后由 9001 于 2020-5-19 11:14 编辑

加上判断:

  1. IFEX #%&NumCountA%<>10,WRIT "%&CurDir%\11.txt",$+0,%&NumCountA%    %&NumCountB%
  2. IFEX #%&NumCountA%=10,WRIT "%&CurDir%\11.txt",$+0,%&NumCountA%   %&NumCountB%
复制代码




有没有办法把这判断搞成一行?条件命令中间用WRIT的话不玩活。

点评

与其这样,不如用0补齐吧。 [attachimg]457122[/attachimg] #code=936T950 ENVI^ EnviMode=1 ENVI^ ForceLocal=1 SET$ &NL=0D 0A WRIT *c "%&CurDir%\11.txt",$+0,A队 B队%&NL%%&NL% 第1轮: CALL @a  详情 回复 发表于 2020-5-19 15:33
回复

使用道具 举报

23#
发表于 2020-5-19 18:33:17 来自手机 | 显示全部楼层
527104427 发表于 2020-5-19 15:33
与其这样,不如用0补齐吧。



这下完美了,感谢5大帮助解决问题!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-12 03:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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