无忧启动论坛

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

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

    [复制链接]
4681#
 楼主| 发表于 2013-3-8 12:40:34 | 只看该作者

回复 #4994 2011hwo1 的帖子

没问题。 每次出新稳定版时, 自动升级孵化版号,(软件相同)。
奇数71 73 75 为孵化版
偶数72 74     为稳定版

[ 本帖最后由 mdyblog 于 2013-3-8 12:43 编辑 ]
回复

使用道具 举报

4682#
发表于 2013-3-8 12:41:57 | 只看该作者
原帖由 mdyblog 于 2013-3-8 09:49 发表

_SUB F1
    ENVI~  &&V1=%1   //取得传入的AAA的值
    MESS V1=[%&V1%]  //显示
    ENVI %1=修改后的值11111
//传回新的值

   
ENVI-ret1  %1=修改后的值11111
//传回新的值
//新版75,这样本函数可以有同名PE变量AAA,便于函数返回值。 HELP ENVI

_END
不同: 前者AAA是环境变量AAA; 后者是&AAA 对应的是PE变量。


   
ENVI-ret1  %1=修改后的值11111
//传回新的值
//新版75,这样本函数可以有同名PE变量AAA,便于函数返回值。 HELP ENVI


ENVI-ret 是设置 %1?
本函数可以有同名PE变量AAA,便于函数返回值。”这句话看着有点晕,是说AAA可以在本函数内再定义一个ENVI &&AAA?可是这本来就可以的吧?
ENVI-ret %1=xxx
这个也是在传参数的情况下可以不用ret就能设置的,现在有了-ret意思是不用再以引用方式来传参数了?
回复

使用道具 举报

4683#
 楼主| 发表于 2013-3-8 12:51:06 | 只看该作者
原帖由 2010qaqz111 于 2013-3-8 12:41 发表    
ENVI-ret1  %1=修改后的值11111
//传回新的值
//新版75,这样本函数可以有同名PE变量AAA,便于函数返回值。 HELP ENVI
ENVI-ret 是设置 %1?
“本函数可以有同名PE变量AAA,便于函数返回值。”这 ...

》》这个也是在传参数的情况下可以不用ret就能设置的,现在有了-ret意思是不用再以引用方式来传参数了?
不是的, 正是为了 【以引用方式来传参数】 设值的。

ENVI &&A=1
ENVI &&B=2
CALL  F &A  &B

_SUB  F
    ENVI &&B=F2
    ENVI~-get1  &&N=%2    //
    ENVI   &&A=F1
    ENVI-ret1  %1=%&N%----F
_END

没有  -ret1
   由于 F也有同名变量 &B;  【ENVI  %1=%&N%----F】  写的是F的&A; 而不是上级的&A
   【ENVI-ret1 %1=%&N%----F】  写的是上级的&A; 而不是F的&A

这样不考虑 本级变量是否和 引用参数 同名。
ENVI-get1  类似。
【ENVI~-get1 &&N=%2】 获取的是上级的&B; 而不是F的&B

[ 本帖最后由 mdyblog 于 2013-3-8 13:49 编辑 ]
回复

使用道具 举报

4684#
发表于 2013-3-8 12:58:12 | 只看该作者
谢谢,这下清楚了。

另外,HELP里说SET与 ENVI &等价,那SET &与ENVI &&是否也是等价?据代码测试好像是的,但是不那么确定。
回复

使用道具 举报

4685#
 楼主| 发表于 2013-3-8 13:48:12 | 只看该作者
原帖由 2010qaqz111 于 2013-3-8 12:58 发表
谢谢,这下清楚了。

另外,HELP里说SET与 ENVI &等价,那SET &与ENVI &&是否也是等价?据代码测试好像是的,但是不那么确定。

是的。
但 SET &&&  对应的是  ENVI &&&   。这里已经不是变量操作,二是MISC(杂碎的,繁琐的,非重点的) 命令。
回复

使用道具 举报

4686#
发表于 2013-3-8 14:00:27 | 只看该作者
A1: 根本不同。
ENVI AAA=123
AAA 是 兼容4.0 的变量。 是WINDOWS 环境变量, 在批处理里可以操作。我地电脑->环境变量里可以看到(部分)
  存在问题是不同线程,不同函数变量重名时,逻辑就乱了。



■前导"$"表示设置系统环境变量,前导"#"表示设置用户环境变量,省略前导符表示设置进程环境变量。

这个是4.0对ENVI变量前导的说明,但是现在的版本如果没有前导就是等于挂上"#"了?
回复

使用道具 举报

4687#
 楼主| 发表于 2013-3-8 14:25:48 | 只看该作者
原帖由 2010qaqz111 于 2013-3-8 14:00 发表



■前导"$"表示设置系统环境变量,前导"#"表示设置用户环境变量,省略前导符表示设置进程环境变量。

这个是4.0对ENVI变量前导的说明,但是现在的版本如果没有前导就是等于挂上"#"了?


ENVI  AAA=1
没有 #$就是进程的 环境变量。  可以继承。

ENVI # AAA=1
#  是用户的环境变量

ENVI  $AAA=1
$ 是系统的环境变量

前者可作为程序变量,如4.0 。
后2者 不作为程序变量,二作为程序配置。
回复

使用道具 举报

4688#
 楼主| 发表于 2013-3-8 14:35:47 | 只看该作者

定时提醒.wcs

原帖由 2011hwo1 于 2013-3-8 10:24 发表
mdyblog老大,不知道闹钟脚本写没有,还是不打算写闹钟脚本了


加一句 ENVI &&&FORCELOCAL=1 ,再用 SET。
去掉了众多的& . 是清爽多了。


定时提醒8.wcs.zip : 命令中 支持环境变量
定时提醒15.wcs.zip :   毫秒精度

[ 本帖最后由 mdyblog 于 2013-3-11 10:31 编辑 ]

定时提醒16.wcs.zip

5.82 KB, 下载次数: 674

评分

参与人数 1无忧币 +10 收起 理由
2011hwo1 + 10

查看全部评分

回复

使用道具 举报

4689#
发表于 2013-3-8 16:10:55 | 只看该作者
下载定时提醒后有发现几个问题:
1:设置保存错误
2:不能及时保存
3:不能同时进行文本提醒和音乐提醒
4:音乐提醒调用了文件关联,而不是用C:\Program Files\Windows Media Player\Mplayer2.exe进行音乐播放后自动退出播放器
5:如果不使用你的配置文件就无法保存配置,如果用了的话退出后再次进入就会多出几个任务
6:任务无法删除
7:没有文件浏览器
8:命令类型  定时器类型 应该是用list命令来写
还有其他几个小毛病
回复

使用道具 举报

4690#
 楼主| 发表于 2013-3-8 16:29:53 | 只看该作者
原帖由 2010qaqz111 于 2013-3-7 16:32 发表

呃,谢谢,脚本实现的话,的确是有很多方式,其实提这个问题是想建议为 FDRV 增加获取空闲可用盘符以及对系统已有盘符和空闲盘符列表做倒序返回的原生功能,用脚本实现虽然也可以,但是总觉得没有原生的方便和 ...

FDRV 已增强
新开关:
*rsort为反序 。*idle为空闲盘符;*idlec除AB
回复

使用道具 举报

4691#
发表于 2013-3-8 16:30:04 | 只看该作者
没有法设置开始时间,循环计时任务提醒时间或者运行程序任务时间应该是 开始时间+间隔秒数*n,这样就是等个几天运行定时提醒器也能正常定时.
回复

使用道具 举报

4692#
 楼主| 发表于 2013-3-8 17:26:28 | 只看该作者

回复 #5004 2011hwo1 的帖子

5003楼已更新。
PECMD.EXE 请下载最新的  PECMD2012.1.75.1-130308-2.多窗口线程孵化版_win32_64.sfx.zip

》》5006#
就是这样的逻辑。
到期时间就是你说的开始时间。

[ 本帖最后由 mdyblog 于 2013-3-8 17:28 编辑 ]
回复

使用道具 举报

4693#
 楼主| 发表于 2013-3-8 17:30:32 | 只看该作者
帮助, 不只是 在线HELP
HELP\目录下还有其它文档。
尤其 补充说明.doc。有图的哦。
回复

使用道具 举报

4694#
发表于 2013-3-8 17:43:53 | 只看该作者
原帖由 mdyblog 于 2013-3-8 14:25 发表
ENVI  AAA=1
没有 #$就是进程的 环境变量。  可以继承。

ENVI # AAA=1
#  是用户的环境变量

ENVI  $AAA=1
$ 是系统的环境变量

前者可作为程序变量,如4.0 。
后2者 不作为程序变量,二作为程序配置。

如果是这样,那么原来4.0的版本是否和现在版本的PE变量基本上没有关系?


这样的话,可否考虑将 ENVI 回归4.0的功能,将PE变量重新建立一个机制,完全脱离开 ENVI 的功能?设置控件属性、杂项也可以单独增加各自专属的命令。
比如,针对PE变量的定义、赋值、返回都各用一个专门的关键字(如DIM,SET,RET之类)或归到一个统一的关键字(如SET)来处理;
把PE变量的前缀符号也换换比如用前导^表示定义(如果没有专门定义的语句的话)和作为左值,用^变量名^的形式来读取和作为右值,跟环境变量区别开;
_SUB 创建函数的时候也同时建立一个相应级别的同名PE变量,用以保存如返回值一类的信息,在函数内用 %0 读写,在调用方用^函数名^获得返回值;
重新明确PE变量的读写穿透和生存期规则,尽量靠近常规的编程语言。


提出这些想法,是因为以下这些原因:
1.复杂:现在的ENVI命令功能实在太多了,使得ENVI命令变得很复杂,学习成本太高(找说明,看别人的代码,实测调试,百度Google,到bbs问人,等等),不利于新手拿到新版PECMD能够很快上手,将PE变量和环境剥离开来可以降低复杂度
2.查错:新版PECMD的脚本可以做出很强大的功能,其中大量使用到了PE变量,稍微复杂一点的代码段一眼扫过就是满地的&,&&,%&,甚至还有&&&,看起来十分累人,调试查错都要非常细心,一不注意多写个少写个&多看个少看个&就可能弄错
3.效率:差不多跟第2条一样的情况,编写代码的时候也要用到大量的&,&&,%&,容易弄错是一个方面,另一个方面的问题是增加了很多击键次数,如果能够改进这一点,可以提高编码的效率(认为这点效率完全不重要的人请无视)
4.易用:这一点比较有意义,如果能够重新建立一套PE变量规则,贴近甚至完全跟常规编程语言相同(主要是不要有跨函数向上穿透读写或者是要明确加开关才能做到也好),这样会更符合常规编程的变量使用习惯,不会一不小心读到或者写到不该读写的东西,这样会使PECMD的可编程能力大大增强
5.清晰:如果将PE变量机制独立出来,读写前导跟系统环境变量和进程环境变量的符号(%%环绕的格式)区别开的话,会令代码的逻辑更加清晰,准确知道什么地方是在与环境变量交互,什么地方是在做程序功能逻辑的运算操作,这样的代码读起来和维护修改起来更清楚明确


上面说的这些只是提出一个想法来跟PECMD的开发者维护者和各位使用者讨论,不一定要实施。现在的开发维护貌似者貌似只有mdyblog大侠一人,毕竟这些真要做起来工作量还是比较大的,所以这只是提出一个话题和各位讨论,不是建议也不是要求,只是希望PECMD能发展得更好,以壮大我PE大军:)

当然,还要感谢mdyblog大侠做了这么多,前面那些命令功能的增加改进,都是花了力气的,非常感谢!

[ 本帖最后由 2010qaqz111 于 2013-3-8 17:56 编辑 ]
回复

使用道具 举报

4695#
发表于 2013-3-8 17:56:45 | 只看该作者
命令类型 列表显示应该是:  文本 音乐 运行程序 PECMD内部命令
定时器类型 列表显示应该是: 间隔定时器  到期定时器
现在设置保存成了修改1次添加1个任务 删除一个任务也成了添加1个任务  重启定时器后就多了很多的任务了   需要修改下
建议将帮助直接显示在标签上,任务列表窗口显示:   在定时项上左键双击修改,空白处则添加;右键双击添加。
在任务编辑窗口显示:  次数0为无限次
这样比较好
回复

使用道具 举报

4696#
 楼主| 发表于 2013-3-8 17:58:16 | 只看该作者
原帖由 2010qaqz111 于 2013-3-8 17:43 发表
如果是这样,那么原来4.0的版本是否和现在版本的PE变量基本上没有关系?
这样的话,可否考虑将 ENVI 回归4.0的功能,将PE变量重新建立一个机制,完全脱离开 ENVI 的功能?
比如,针对PE变量的定义、赋值 ...

不用 & 的变量, 和4.0的变量完全兼容。

加 了&或用SET ,则是PE变量, 和原来4.0的版本变量没有关系。  

SET 就是专门这对 PE变量的。
不过取PE变量内容,&省不了。

如 MESS  %&MSG%
和 MESS  %MSG%
不同的。 也没有其它语法词来区分,已省掉&。

兼容4.0 还是头等大事。 不少人还在在用4.0  。 也用熟了。 以前的经念不能轻易丢掉了。



可以 【ENVI &&&FORCELOCAL=1】强制用PE变量。 这样&基本上可以省掉。
此时如果需要 环境变量。可以局部临时打开。
ENVI &&&EnviMode=1
ENVI   &&&FORCELOCAL=1   
ENVI  &MySystemRoot=
{   ENVI  &&&FORCELOCAL=0   //局部临时打开
    SET  MySystemRoot=%SystemRoot%   //环境变量SystemRoot  =》PE变量 MySystemRoot
}   // 临时开启,到此自动作废
MESS %MySystemRoot%

[ 本帖最后由 mdyblog 于 2013-3-8 17:59 编辑 ]
回复

使用道具 举报

4697#
发表于 2013-3-8 18:11:58 | 只看该作者
原帖由 mdyblog 于 2013-3-8 14:35 发表

添加任务无法保存任务,修改和删除任务能保存,但是都是增加任务列表里面所有的任务

[ 本帖最后由 2011hwo1 于 2013-3-8 18:13 编辑 ]
回复

使用道具 举报

4698#
发表于 2013-3-8 18:42:22 | 只看该作者
ENVI 完全就按4.0的来做就可以兼容了啊,PE变量只用 SET 来操作,取用%&问题也是不大,其实最容易让人晕头的还是穿透读写,很容易把人弄昏头,还好现在我基本上已经弄清楚了,就是看着满地的&&老感觉像某个语言里连接条件的AND操作符,不过也差不多已经习惯了。

我之前做几个脚本根本没注意到这些,全是用的直接 SET 没有&,读也用的%不是%&,因为之前不知道具体细节上有什么区别,试了好久,昨天突然不知道怎么把值写到用户变量里去了,结果那脚本立马崩了,有两三个脚本都是这样,查错查了好久,现在正在把代码改到 && 的本级屏蔽上级的写法来,这样最贴近C和VB的习惯,呵呵。

[ 本帖最后由 2010qaqz111 于 2013-3-8 18:43 编辑 ]
回复

使用道具 举报

4699#
发表于 2013-3-8 18:47:10 | 只看该作者

回复 #5011 mdyblog 的帖子

能不能把内部的变量传递给批处理?

@echo off
pecmd envi $desktop=%%desktop%%
echo %desktop%
pause

得到的%desktop%是空的

[ 本帖最后由 527104427 于 2013-3-8 18:49 编辑 ]
回复

使用道具 举报

4700#
发表于 2013-3-8 19:07:41 | 只看该作者
原帖由 527104427 于 2013-3-8 18:47 发表
能不能把内部的变量传递给批处理?

@echo off
pecmd envi $desktop=%%desktop%%
echo %desktop%
pause

得到的%desktop%是空的

在我这能得到桌面的目录啊
回复

使用道具 举报

4701#
发表于 2013-3-8 19:10:02 | 只看该作者
原帖由 mdyblog 于 2013-3-8 17:58 发表

不用 & 的变量, 和4.0的变量完全兼容。

加 了&或用SET ,则是PE变量, 和原来4.0的版本变量没有关系。  

SET 就是专门这对 PE变量的。
不过取PE变量内容,&省不了。

如 MESS  %&MSG%
和 MESS   ...

pecmd每次启动是不是都向系统广播pecmd的系统变量啊?
回复

使用道具 举报

4702#
发表于 2013-3-8 19:17:14 | 只看该作者

回复 #5015 2011hwo1 的帖子

哦,我用的是PECMD2012.1.73.1-130214-8.多窗口线程孵化版_win32.sfx
下新版试了一下,可以了
回复

使用道具 举报

4703#
 楼主| 发表于 2013-3-8 20:19:37 | 只看该作者
原帖由 527104427 于 2013-3-8 18:47 发表
能不能把内部的变量传递给批处理?
@echo off
pecmd envi $desktop=%%desktop%%
echo %desktop%
pause
得到的%desktop%是空的

环境变量只能向下传,而不能相反。子进程(PECMD等)不能不能影响父进程(cmd)的环境变量。


这是操作系统的事。 操作系统 禁止这样做。 环境变量就是 每个进程独立。 否则烂桃了。

某些GUI程序,可以同步更新, 这是接受程序的逻辑的事,二不是发生者。
接受者 cmd没有这个功能。 大概是出于安全考虑吧。 自己的随意一个变量, 突然  自己就变量了,谁还敢用它来编程序。

一般 用一个中介文件来做到这个小哥。

TESTPECMD.CMD:
PECMD WRIT pecmd_tmp.cmd,$1,@SET DESKTOP=%%DESKTOP%%    //写入中介文件a.cmd  
@CALL   pecmd_tmp.cmd   //本进程生效
echo %desktop%
回复

使用道具 举报

4704#
发表于 2013-3-8 20:22:15 | 只看该作者

回复 #5018 mdyblog 的帖子

学习了           `
回复

使用道具 举报

4705#
 楼主| 发表于 2013-3-8 20:25:25 | 只看该作者
原帖由 2011hwo1 于 2013-3-8 19:10 发表

pecmd每次启动是不是都向系统广播pecmd的系统变量啊?


自己不会。
只有在脚本 中用 ENVI   $XXX=YYY 或ENVI #XXX=YYYY
者条命令 会光播的,这个时间可能很长,在正常系统很长的。 PE上由于开的进程少,没有正常系统那么长。

建议用多线程来 设置。
回复

使用道具 举报

4706#
发表于 2013-3-8 20:38:05 | 只看该作者
原帖由 mdyblog 于 2013-3-8 20:25 发表


自己不会。
只有在脚本 中用 ENVI   $XXX=YYY 或ENVI #XXX=YYYY
者条命令 会光播的,这个时间可能很长,在正常系统很长的。 PE上由于开的进程少,没有正常系统那么长。

建议用多线程来 设置。

那我写了个自动备份文件的脚本,没有窗口的,每6分钟执行一次,每次执行时当前窗口都会闪一下,如果正在输入文字的话就会中断文字输入是怎么回事
回复

使用道具 举报

4707#
发表于 2013-3-8 21:26:13 | 只看该作者
原帖由 mdyblog 于 2013-3-8 14:35 发表

157618

看了下配置保存是最后一行,而实际上应该是将配置覆盖保存在第5行后并且删除剩余的行,也可以先删除文件然后重新写配置文件
添加任务怎么没有保存

[ 本帖最后由 2011hwo1 于 2013-3-8 21:33 编辑 ]
回复

使用道具 举报

4708#
 楼主| 发表于 2013-3-9 00:34:03 | 只看该作者
原帖由 2011hwo1 于 2013-3-8 21:26 发表

看了下配置保存是最后一行,而实际上应该是将配置覆盖保存在第5行后并且删除剩余的行,也可以先删除文件然后重新写配置文件
添加任务怎么没有保存


#5003 楼
定时提醒6.wcs.zip (5.13 KB)
加一句 ENVI &&&FORCELOCAL=1 ,再用 SET
去掉了众多的& . 是清爽多了。


[ 本帖最后由 mdyblog 于 2013-3-9 09:26 编辑 ]
回复

使用道具 举报

4709#
 楼主| 发表于 2013-3-9 00:46:15 | 只看该作者
原帖由 2011hwo1 于 2013-3-8 20:38 发表

那我写了个自动备份文件的脚本,没有窗口的,每6分钟执行一次,每次执行时当前窗口都会闪一下,如果正在输入文字的话就会中断文字输入是怎么回事


调用了 其它程序吗? 启动程序时, 系统可能闪一下。

试试 EXEC @
来运行程序

[ 本帖最后由 mdyblog 于 2013-3-9 00:59 编辑 ]
回复

使用道具 举报

4710#
发表于 2013-3-9 08:54:00 | 只看该作者
原帖由 mdyblog 于 2013-3-9 00:46 发表


调用了 其它程序吗? 启动程序时, 系统可能闪一下。

试试 EXEC @
来运行程序

没有调用其它程序,就使用了些内部命令:CALL FORX FNAM calc ENVI IFEX FILE mstr FIND TEAM lstr SITE  其他的命令就没有使用
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-9 09:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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