可乐地盘 发表于 2018-7-5 00:21:39

MiniCMD 2.1.2 支持IF嵌套——【原DDC固件组Just Fancy】

本帖最后由 可乐地盘 于 2018-7-5 01:01 编辑


名称&版本MiniCMD v2.1.2
作者Just Fancy
提交日期2011/05/15
最后更新2012/03/22
授权形式免费、开源
所属类型DIY工具



更新内容


新增IF嵌套支持!!!
新增支持不同盘符有不同命令文件名称(原来的是统一路径名称)
新增D盘配置文件搜索(当前配置文件搜索顺序为D->E->C->Z)

IF嵌套说明

建议不要嵌套太多层,我在模拟器(抱歉我没有真机)上测试过三层,是没有问题的
当前对IF嵌套作了一些命令限制,在IF里面不能用back restart aborst stop等系列命令
如果大家觉得有必要,请联系我或者在帖子里回复,我会试着加回去

配置文件改动说明

原本仅支持在CMDFile设置命令文件的路径名称
从2.1.2开始,你可以指定不同盘符下有不同的名称
很简单,比如你要指定C盘的命令文件为C:\MyCmd\mc.txt
那么你可在配置文件里增加如下一句
CMDFileC=C:\MyCmd\mc.txt

那么,MiniCMD会根据Drive的设置(如果没设有C,那么加上面那行也是没用的)
优先查找C:\MyCmd\mc.txt文件,如果没找到,那么试着查找CMDFile设置的命令文件
当然你还可以设置其它盘符的(但仅限于C、D、E、Y、Z,塞班没其它盘的吧?)

此选项由冰玑子提出,感谢冰玑子的建议




++新增logps命令
++新增运行程序等待选项
++新增时间判断
++新增静默安装、卸载SIS文件
++新增MiniCMD配置文件



2012/03/11更新到beta3

++新增logps命令

logps功能:列出当前运行的程序列表,并记录
格式: logps [文件]

其中[文件]为记录程序列表的文件,为可选,
当没指定时使用默认的日志文件记录

修正了多个MiniCMD运行同时运行有些命令不能正常执行的BUG

尽管当前同时运行多个MiniCMD不能达到实时运行,
经测试,是完全可以完成任务的(除非是要求同时性的)


题外话


首先得向大家道个歉,
beta2后消失了那么久,现在的beta3又才更新那么点。。。
关于多个MiniCMD运行的问题,我找了好多资料的
请注意,我不是Symbian开发人员,甚至还没入门,我也是一边学习一边编写的
所以一开始就希望大家有时间的话可以参与到开发中来,只是一直没人

蛋疼的Symbian资料没有多少,有的都试过无法达到预期效果
所以目前暂时到这程度了
IF嵌套的仍然未实现,还麻烦大家使用着cmd吧,抱歉

关于Symbian 3、Bella版本问题,由于这两个版本提供的SDK不兼容旧有的,
必须大量改动代码(说不定得完全重写),所以近期是不会实现的

从这版本开始改用arm编译器,可以很大的优化程序,比如说体积也是小了很多的

如果没有问题,那么这版本就作为正式版归入到主帖发布了

至于后台驻留什么的以后再考虑了

最后要感谢大家对MiniCMD的支持,希望继续反馈问题,提建议(虽然不一定都能实现),
让MiniCMD变的更强大



2012/02/07更新到beta2

新功能

++新增运行程序等待选项
++新增时间判断
++新增静默安装、卸载SIS文件

等待新建程序的参数为-w,且目前只在-c的时候有效(-c -w同时用)

时间判断的参数为-t,格式为 时:分:秒
目前只能判断是否相等,比如
if -t 23:05:11
note 时间到~
endif


安装命令为install,可选参数为-e,
默认安装在C盘,加-e装到E盘
现在一次只支持一个SIS安装
(目录安装功能暂时去掉了,发现问题)

卸载命令为uninstall,后跟UID


修改配置文件路径,优先搜索的是E盘,然后到C盘,最后才到Z盘,方便固化
配置文件名称改为根程序名称一样,
比如你将MiniCMD改在XXX.exe,那么配置文件的名称为XXX.ini

这配置文件名称是动态根据MiniCMD名称获取的,不可通过工具修改


其它
BUG修复


测试版不建议固化,如果你手机已固化有MiniCMD,
冲突的话请自行修改MiniCMD名称跟UID(目前Server仍可用旧版的,尚无改动)

---------------------------------------------------------------------------------------------------------
以下是beta1
---------------------------------------------------------------------------------------------------------
首先得向大家抱个歉,这么久没见踪影,MiniCMD好久没更新
大家发短消息也没及时回


直入正题吧~~~

这是个测试版的,改动如下

新增MiniCMD配置文件


然后。。。没了,先别扔鸡蛋,贵的


大家先看看当前版本的配置文件的选项



; 是否禁用MiniCMD,0禁用,1启用
; 默认启用
Enable=1

; 设置MiniCMD查找的盘符跟顺序(按先后)
; 可设置多个盘符或留空
Drive=DECZ

; 命令文件
; 跟Drive合成类似C:\Data\MiniCMD.txt的路径
; 切勿加上盘符!
CMDFile=Data\MiniCMD.txt

; 日志级别
; 0 - 禁用
; 1 - 仅记录失败
; 2 - 记录全部操作
LogLevel=2

; 日志文件,自定义日志该存在哪
; 需带盘符
; 不设则相当于LogLevel=0
LogFile=D:\MiniCMD.log


此版本主要解决大家对这盘符顺序查找问题(各个要求都不一样,PM要求我改个人版的一大村)
现在可以通过这配置文件直接修改这顺序,当然你也可以固定只搜索C盘或其它盘的,没人规定你把所有盘符写上

当然,命令文件名也可以随便命名了,只要设置CMDFile选项就可以了
剩下几个就不说了,都已经有注释了的

注意:旧有的在命令文件开头开启日志功能已经无效,请使用配置文件这新的方式
还有禁用MiniCMD同样都改在配置文件了

当前测试版,配置文件全部放在C:\System\Apps\MiniCMD目录下
不管你有几个版本的MiniCMD

至于文件名,请通过16进制工具修改
找到C:\System\Apps\MiniCMD\MiniCMD.ini修改即可,
留下的空间应该够定义你想存放的路径跟文件名了

本来想自动根据MiniCMD.exe的名称来读取配置文件的,
但未找到如何在控制台程序下获取自身的名字,
所以暂且麻烦点
如果你知道方法,还望赐教!

貌似近段时间又要忙了,所以先匆匆发上这beta1

下个测试版本预计加入的功能

重新考虑加入静默安装功能
考虑IF嵌套(目前可以通过cmd命令实现)
多个MiniCMD更好的共存(目前不能完美共享Server)
其它的?(待大家反馈)






请认真看完此帖,有些已在帖里说明了,就不要用重复问

如需查看命令出错返回代码是什么


注意,返回0的是正常的,其它都为出错代码




下版本预告

!!!!注意!!!!
开始天真的以为会有时间好好开发下一个版本的,
回头发现我“当时太傻太天真了”
现在已经没有精力开发新的版本了
所以不会有新的MiniCMD版本了

抱歉了各位






程序介绍

如果你用过LittleCmd,相信光看名字就知道个大概了。没错,跟LittleCmd一样,先编辑指定的命令集,再执行程序,
程序根据命令集进行相应操作。比如复制、移动文件等操作。
功能虽跟LittleCmd类似,但又是有区别的。且看各个命令介绍。
(由于各个版本命令都有改动,下面列出的全是最新版拥有的,如无,请及时更新至最新版本)




abort

功能:中止MiniCMD继续执行abort命令后的语句(仅对当前文件命令集有效)
形式:abort

att

功能:设置文件或者文件属性
形式:att [参数列表] [目的路径]

可用参数列表:
+s加系统属性
+h加隐藏属性
+r加只读属性
(相应的把+改为-即表示去除相应的属性)
/s包括子目录

例:去除c:\data下所有文件的只读属性
att -r /s c:\data\*

cmd

功能:动态加载指定文件里的命令集
形式:cmd [文件路径]
比如
if XXX
cmd ddd.txt
endif
此时,只有if成立时才执行cmd,而不是像之前版本不管成不成立都在执行前加载
例:加载e:\other\my.txt里的命令
cmd e:\other\my.txt

另外,不能在另一个文件里加载原来的!!!
比如在C:\A.txt里cmd C:\B.txt,不能在B里写的cmd C:\A.txt!!!

cp 或 copy

功能:复制文件或文件夹
形式:cp [参数列表] [源路径] [目的路径]

可用参数列表:
/s 包括子目录,复制目录已包括子目录,故只用在复制文件时
/o或者-o 覆盖已存在文件,不加此参数则不覆盖
支持同时设置新文件属性,参数同att

例:复制z:\data下的*.aac 到e盘下的aac文件夹,并去除只读属性
cp /s -r z:\data\*.aac e:\aac\

delete

功能:删除文件

例:delete e:\test\*.txt
log

功能:输出一行日志
形式:log [要输出的内容]

mv

功能:移动文件或者文件夹
形式参数同cp

例:将e:\music files\下的歌词(*.lrc)移动到e:\lyrics
mv /s "e:\music files\*.lrc" e:\lyrics\

md 或 mkdir

功能:创建目录
形式:md [目录]

例:在e盘下创建test\subfolder目录
md e:\test\subfolder

rm 或 rmdir

功能:删除文件或者文件夹
形式:rm [参数列表] [目的路径]

可用参数列表:
/s包括子目录,应当只用于删除文件时

例:删除c:\other下所有sis安装包
rm /s c:\other\*. sis?

rn 或 rename

功能:重命名文件或者文件夹
形式:rn [源路径] [目的路径]

例:重命名e:\lyrics下的歌词文件的后缀(*.lrc)为.txt
rn e:\lyrics\*.lrc e:\lyrics\*.txt

run

功能:调用应用程序
形式:run
可用参数列表:
-c,理论上仅应用于运行后台程序
-w,等待程序运行结束(需与-c参数一同使用)

程序名称可不带路径
例:运行UC
run UcWeb60Signed.exe


kill

功能:结束进程
形式:kill

其中UID必须为0x(0X)开头的十六进制
例:结束MIFEditor
kill MIFEditor.exe

sleep

功能:暂停程序
形式:sleep [毫秒数]
例:暂停3秒
sleep 3000

模拟按键
key [-c(可选)] [按键序列] [按键时间(可选)]
sendkey[-c(可选)] [按键序列]

key为模拟在当前界面的按键,sendkey为发送到指定UID或标题的程序

例:拨打10086
key -c 197 ;197为红色挂机键,这里退出到桌面
key 10086
key -c 196 ;196为绿键代码

note

功能:弹出消息框

note [-c(可选)] [信息] [标题]
加-c表示显示的消息需按下确定键,此时标题选项才有效

file

功能:创建空白文件或调用系统关联程序打开文件
file [-c(可选)] 文件路径

带参数-c时为创建一个空白文件(但不覆盖已存文件),不带则打开

find

find [参数] [路径|文件] [操作]
功能:查找文件并作相应操作

当前操作仅支持rm及log,参数只有/s一个,加的时候表示同时搜索子目录

[路径|文件]格式:可以有多个路径,用英文分号分隔(;)
路径跟文件之间用|分隔
比如查找C盘跟E盘下的txt文件并删除
find /s C:\;E:\|*.txt rm

需要注意的,路径后一定要有\(如上面的C:\),路径 跟 |都不能少,操作只能是小写形式
目前rm操作不支持删除目录(假设你查找的是目录时)
支持使用通配符,具体看个人发挥。。。


logps [文件]

功能:记录当前系统运行程序列表
其中[文件]为可选,指定记录到的文件
如不指定则使用默认日志文件



install [-e]
功能:安装指定的SIS文件
参数-e为可选,指定安装到E盘,不加则默认C盘



uninstall
功能:卸载指定UID的程序


跳转命令

abort_if_exists、abort_if_not_exists
当指定的文件存在(、不存在)时中断当前加载的文件的后面的命令
例:abort_if_exists c:\data\test.bin

skip_if_exists、skip_if_not_exists
指定文件(不)存在时跳过下一条命令

back_if_exists、back_if_not_exists
指定文件(不)存在时返回上一条命令

restart_if_exists、restart_if_not_exists
指定文件(不)存在时重新执行所有命令(即再从头开始)

(请小心使用上面的两组命令(绿色高亮的),否则可能导致死循环最终导致MiniCMD崩溃而不能正常工作)
(而且限制这两组命令不能为第一条,否则直接忽略)

增加-a参数,参考IF-ELSE

IF-ELSE语句

支持if、ifn、elseif、elseifn、else、endif
其中后面加n(not)的表示非
当前版本功能仅为判断文件(夹)是否存在
形式可以为
IF XXX
ENDIF

IF XXX
ELSE
ENDIF

IF XXX
ELSEIF YYY
ELSEIF ZZZ
.
.
ELSEIF NNN
ELSE
ENDIF

也就说,else、elseif(n)是可选的,elseif(n)可有多个,
else在每个if-else里只有一个,而且endif必需有
if-else之间不能留空(是指不写任何命令,非空行之类)

示例

If d:\test.txt
md d:\newdir
ElseIfn d:\folder\
md d:\folder\
cp /s -r z:\data\*.aac e:\aac\
Else
att +r /s e:\test\*.lrc
EndIf


可用参数:
-a,指定为判断程序是否正在运行
-e,最后一次命令操作返回值,当最后一条命令为note时,如果使用了-c参数,那么点确定返回的是0,取消返回的是-1
-s,判断两个文件大小是否相等
-t,判断当前时间是否与指定时间相等

示例

if -a x-plore 或者 if -a 0xa0000bcd

//
rm d:\test\
if -e
note 删除失败
else
note 成功删除
endif



注意:命令跟参数是不区分大小写的,如果路径中包括空格,请用双引号引住(如mv命令中举的例子)
另外,Symbian系统API判断文件夹的一个标准为后面有没有\,建议包含文件夹的路径在后面多加个\




使用程序


注:从2.1开始增加了配置文件,请务必使用新的方式

默认配置文件存放于System\Apps\MiniCMD\目录下,
配置文件的名称跟程序名称一致,比如MiniCMD.exe则配置文件名称为MiniCMD.ini

具体配置选项见附件中的MiniCMD.ini

编码都只能是UCS-2 Little Endian
命令文件中可以;或#做注释
每行不要超过256字节





最后的说话

如果你够热情,有的相关编程的知识(要求不高的,懂C/C++就好),
希望您能参与到MiniCMD的开发,让大家用上更顺心的MiniCMD
有兴趣的话,请直接EMAIL我

源码工程在:code.google.com/p/minicmd/
尽管我已经作了多次测试,如果发现问题,请及时联系我,谢谢!





关于附件

安装版提供了MiniCMD2可选安装,大家可以装上测试两个MiniCMD共存的情况
放心,只有一个MiniCMD_Server而已(两个MiniCMD共用)

安装过程中出现的一个选项为“空白选项”
主要是为了防止既不选开机自启跟安装MiniCMD2时的尴尬
(貌似必须选一个,所以才加个空白,这个不影响其它的)

当然了,解压版的也提供了一个MiniCMD2.exe


v2.1.2
**** Hidden Message *****

v2.1.0

免费为大家做了个共存的,不需要就不用管它
**** Hidden Message *****




留着2.0.3的,说不定有人要。。。
**** Hidden Message *****

可乐地盘 发表于 2018-7-5 00:21:58

沙发不留

雲天 发表于 2018-7-5 08:55:28

好资源呀

沃8G 发表于 2018-7-5 22:19:47

地板!!!

红泥佳子 发表于 2018-7-23 13:21:29

眼睛看花了!

孤月独影 发表于 2018-8-7 14:08:47

谢谢分享:P

寒雨沐风 发表于 2018-8-8 18:08:46

好神奇的东西啊,涨见识了

祝融灭共工 发表于 2018-9-24 17:48:40

感谢分享

吻过你的脸是风 发表于 2018-10-5 23:37:49

为了这个特地来注册

lirui51324 发表于 2019-3-25 22:28:29


好资源呀

PlexLiang 发表于 2019-10-28 11:50:10

好东西

zixing 发表于 2020-9-26 14:27:47

支持

blj000000 发表于 2023-2-14 16:48:06

不记得怎么让他在Z盘自启动了

马荣华 发表于 2024-4-29 12:12:06

感谢分享。
页: [1]
查看完整版本: MiniCMD 2.1.2 支持IF嵌套——【原DDC固件组Just Fancy】