无忧启动论坛

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

一个新的命令解释器:v1.3 预览 wtcmd(by shoulea)

[复制链接]
跳转到指定楼层
#
发表于 2010-9-14 00:02:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
改动非常多,代码框架基本形成,不会再发生很大变化,功能增强了许多,还有一些功能正在加入。

最近很忙,帮助没时间写,会编程的可拿去测试,用VS2003发的源代码。

可执行文件为控制台调试版,用“wtcmd learn”进入交互界面。

==========================================================================

在下一个版本中将包含文件/注册表读写、exe/dll资源的读取,也将支持读取一个如*.reg/*.inf等文件,对其作一个替换,将结果导出到临时目录,再加载。即相当于文件的预处理,我们知道*.inf文件尚可包含一个当前目录,而*.reg文件却只能写死路径,这样我们往往要在导入*.reg文件后再用 pecmd 进行修改,非常不方便,这一功能将解决这一问题。

将支持从内部/外部执行vbscript/javascript代码,DLL函数的调用,……

还将提供一个 browse 命令,不仅能浏览文件、文件夹,也能像改变快捷方式图标的对话框那样,浏览*.ico/*.exe/*.dll中的图标。

总之功能多多,更易使用,敬请期待!


==========================================================================


wtcmd(by shoulea) v1.1 readme

wtcmd 已经全面更新了!

新亮点1:人性化的语法

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

继 makeargv 这个重要函数之后,我又实现了一个名为 parsargv 的函数,它的使用使 wtcmd 的语法变得十分优美,而且命令的编写也更加容易了!

再次考虑 1.0 beta1 中消息框示例,那时我们的代码是:

    wtcmd mess "Hello, world!" -c hello -i i -m oc -t 5000

现在这个代码仍受支持,不过我们可以有更加漂亮的方式:

    wtcmd mess "Hello, world!" --caption=hello --icon=infomation --mode=OKCancel --timeout=5000

两个代码表示了完全相同的意思,但后者具有更好的可读性。

wtcmd 像 Unix 的命令行工具那样处理命令行参数,用“--”引导长选项,用“-”或“+”引导短选项。

对同一命令几乎总是可以同时使用全名(像上面的第二个代码)和缩写(如第一个代码),仅个别全名无缩写,全名与缩写可以混合使用。如可用下面代码实现同上面相同的效果:

    wtcmd mess "Hello, world!" -c hello -i i --mode=OKCancel -t 5000

命令的选项(指被“--”“-”或“+”所引导的参数)和普通可以用任意顺序指定,也就是说,上面的代码又可写作:

    wtcmd mess -c hello "Hello, world!" --mode=OKCancel -t 5000 --icon=information

大小写的限制完全去除,现在选项的名字或其缩写也可用大写字母,如:

    wtcmd mess -C hello "Hello, world!" --MODE=okcancel -t 5000 --icon=INFORMATION


新亮点2:形象的语法

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

数字、字符串和列表是重要的工具,对它们的处理方式直接决定命令文件的易写性和可读性,wtcmd 1.1 使用形象的语法对它们进行处理。

先看数字。calc 命令提供了对四则运算的完全支持,并可用括号任意嵌套。看下面的代码:

    wtcmd calc x = (3 + 2) * 7 ; mess $x

您将看到正确结果:35

再来看字符串。wtcmd 对字符串提供了最灵活的支持,可以用各种方法作用到目标字符串上,从而生成新的字符串,如:取子串,查找,替换,像 bat 用 %~dpnx1 的方式提取路径的各部分。

    wtcmd s = "012345" --left=3 ; mess $s

这取出了左边的 3 个字符。

    wtcmd s = "AxaxxAyxxa" "ax" "*" --replace ; mess $s

这将串中的子串“ax”全部换成了“*”。

    wtcmd s = "%windir%\system32\notepad.exe" --get=dnx ; mess $s

一个完整的路径分为“驱动器 driver -- d”“路径 path -- p”“名字 name -- n”“扩展名 extension -- x”四部分,上面只指定了“dnx”,因而结果为“C:notepad.exe”(假定非 PE,系统盘为 C)。

再看列表。可以向列表增元素,删除元素,也可用新元素替换部分元素。默认使用换行符“\n”作为分隔符(尤其是对操作符“<<”和“>>”,即 wtcmd 希望您逐行处理数据,这样高效而方便),但对于“<<”和“>>”之外的操作,您可以使用 --delimitor 选项或其缩写 -d 指定一个分隔符。

    wtcmd mess $path ; path : --add D:\Programs --delimitor=";" ; mess $path

通过两个消息框,您将看到 --add 操作向 path 搜索路径列表增加了一个新元素“D:\Programs”。

将下面的代码存为 d:\a.txt,用命令 wtcmd d:\a.txt 观看效果。

    list = ""
    list << "当前的临时目录为:"
    list << "%temp%"
    mess $list

<< 向列表增元素(使用换行符作为分隔符,而且不能改变),从而构造了一个具有两行文字的消息框。另请注意,现在同时接受“%”和“$”引导的环境变量展开。


新亮点3:强大的语法

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

wtcmd 现在完全支持了 C 语言支持的各种流程控制语句,while/for/if/switch 四种语句都得到了支持!

与 1.0 的配对方案 while ... loop 和 if ... end 不同,1.1 仅用关键字 sub/while/for/if/switch 开头,用同一个关键字 end 结尾。

看看 while 循环:

    i = 0
    while i < $#
        calc i += 1
        mess ${$i}
    end

将上述代码存为 d:\a.txt,用命令“wtcmd d:\a.txt a b c”观看效果,可以看到它用消息框显示了传递的参数“a b c”。

注意:$# 是传递的参数个数,而${$i} 是变量的多重展开,与 1.0 是一样的用法,只是不再支持随机数生成“$?”,作为替代,可用“num = --random”在变量 num 中获取一个随机数。

实际上,要想列举参数,可以用更棒的方法:

    for --argv
        mess $_
    end

除了参数,也可以用 for 语句在其他列表上作循环,也可以传递 --reverse 选项,这样可以反向遍历列表:

    for --reverse
        mess $_
    end

注意,其中列举参数是默认的操作,因此上面并没有再写出 --argv。上面两个代码中的“$_”即是列表中的当前元素。

if 语句现在是完整的语句(lmle 曾指出没有为 if 设计 else,其实是当前自己思路被搞混了,现在经过思考终于将其搞定了),甚至可以有 else if。

    x = 5
    if $1 > x
        mess "传递的数比 x 大。"
    else if $1 < x
        mess "传递的数比 x 小。"
    else
        mess "传递的数与 x 相等。"
    end

将代码存为 d:\a.txt,用命令“wtcmd d:\a.txt 5”观看效果。(非常抱歉,由于“-”作为负号与选项引导字符冲突,暂时不能传递负数,这将在将来得到修正。)

switch 语句是另一个很好用的语句:

    switch $1
    case "apple" "pear"
        mess "您传递的是一种水果。"
    case "panda" "cat"
        mess "您传递的是一种动物。"
    default
        mess "抱歉,不能作出判断。"
    end

不用我再说怎样观看效果了吧!


其他地方的改进

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

本次更新主要是核心的更新,80% 的代码经过了改进。最大的一点是现在可以同时编译为 ANSI 版本和 Unicode 版本,当然我们更喜欢 Unicode 版本,之所以使其也能以 ANSI 方式编译,是希望如果 DOS 或其他地方可能需要 wtcmd,改动的地方更小,实际上 util 中的代码,绝大部分现在已经可在 DOS 上用 Turbo C 编译了!

当然命令方面并非完全没有改进,实际上正由于 parsargv 的亮相,所有命令的选项分析都重新写过了,即是前面说的使得语法更优美。

由于 parsargv 使得命令选项的处理更容易,命令有了更多的灵活性,如 1.0 中用 file 命令删除文件时,如果以“\”开头,如“\pagefile.sys”会导致所有盘下的 pagefile.sys 被删除,现在这是一个可选的功能。

    rm \pagefile.sys

只删除当前盘下的 pagefile.sys,即“%CurDrv%\pagefile.sys”,而:

    rm \pagefile.sys --extension



    rm \pagefile.sys -x

与原来的做法具有相同的效果。

注意,原来的 FILE 命令其功能被分到了三条命令中:rm -- 删除(remove),cp -- 复制(copy),mv -- 移动(move)。

总之,wtcmd 正变得越来越易于使用,欢迎继续关注,并提出宝贵的意见与建议!


wtcmd v1.1 by shoulea
7:25 2010-10-2

=======================================================================

calcexpr by shoulea

经过一天的努力,终于实现一个强大的表达式计算函数。

可以支持以下运算符的混合运算:

    基本的算术运算           + - * / ^

    专门用于整数的运算       div mod

    计算平方根               sqrt x

    计算绝对值               |x|

    截去小数部分             [x]

支持一元的+和-算符;

任意深度的括号嵌套;

可读取环境变量的值用于计算;

内置 pi 和 e 两个常数。

这一模块就不加入到 wtcmd 中了,因为我打算重新构造 wtcmd,写一个更强的核心。

calcexpr by shoulea
19:24 2010-9-18

==================================================================

wtcmd(by shoulea) v1.0 beta2 readme

实现了环境变量的读写及四则运算,现在可以演示循环和子程序的使用了。

还将运行库检测内存泄露的头文件<ctrdbg.h>包含了进来,如果解释器运行过程发生内存错误,则调试版解释器可给出诊断信息,这样可使解释器更为健壮。


示例1:使用 envi 的列表读写功能枚举参数
------------------------------------------------------------------
envi list = "$*"
while -s "$list"
    envi list > item -b
    mess "$item"
loop

将此代码存为“d:\no1.txt”,用命令“wtcmd d:\no1.txt a b c”进行测试,这将显示三个对话框,内容分别为“a”“b”“c”。

此程序将变量 list 初始化为传递给命令文件的参数表,然后用“envi >”命令每次读一个参数,当遍历了所有参数后,循环结束。

$* 代表传递的所有参数,如对“load a.txt a b c”,则 $* 即为“a b c”。

$* 是一个特殊的环境变量,解释器用环境变量 arg1、arg2、……对其进行展开。

展开 $* 涉及到参数的连接,如果参数有空格,则展开的结束未必与最初传递的一致,而且引号将对envi命令对参数的解释产生影响,因此这种枚举方法只适合传递的简单参数,最好不含空格。


示例2:使用变量的多重展开功能枚举参数
------------------------------------------------------------------
envi i = 0
while i < $#
    incr i
    mess "${arg$i}"
loop

将此代码存为“d:\no2.txt”,用命令“wtcmd d:\no2.txt a b c”进行测试,显示的消息框与上例相同。

此例相比于上例,更简洁也更安全,即使参数传递了空格,它也同样可以工作。

代码将变量 i 初始化为0,而后循环,即到其值超过传递的参数个数,命令“incr i”使变量 i 的值加一。

最有意思的是“${arg$i}”它实现参数的读取。由于 cmd.exe 默认用 % 引导环境变量,而 % 不能体现出层次关系,故改用 $ 引导环境变量,如果有简单变量 name,则使用“$name”即可。

如果想要反复展开,可将变量名部分放到“{}”中,如本例中有“{}”,解释器先展开 $i,这次有值1、2、3、……,然后再对“{}”执行一次展开,这一次展开的是“arg1”、“arg2”、……这正是传递的参数。


示例3:使用循环、四则运算及列表追加元素功能
------------------------------------------------------------------
envi item = "$? mod 5" -e
envi list = $item
while item != 0
    mess "$item 不为零,是否继续?" -m yn -iq -c Continue?
    if no
        break
    end
    envi item = "$? mod 5" -e
    envi list < $item -b
loop
mess "己结束,所得随机序列为:\n  $list" -ii -c Finish!

*** 此文件不必传递参数,您可以直接将“no3. random seq.txt”拖动到“wtcmd_debug.exe”上进行测试。

*** 调试版本的解释器为控制台应用程序,可以看到更为详细的解释过程。

每次遇到变量“$?”,解释器都用一个0~32767间的一个值将其展开,而本例中使用了取余运算符,这样每次都生成一个0~4的随机数。

当生成的随机数不为0时,循环将进行,并显示一个消息框询问是否产生更多的随机数,可以选“no”退出循环。

程序每次用命令“envi <”将元素追加到列表中,其中的“-b”用于指定分隔符,默认的分隔符为“;”,而“-b”将使得以空格作分隔符。


示例4:子程序设置、返回值及其检测
------------------------------------------------------------------
envi t = "$? mod 10" -e
call Example $t
if yes
    mess "子程序返回了“是”。" -ii
    exit
end
mess "子程序返回了“否”。" -is

_sub Example
    if $1 > 5
        return yes
    end
    return no
_end

此例有一个名为 Example 的子程序,它对传入的第一个参数进行检测,如果传入的值比 5 大,则返回“是 yes”,否则返回“否 no”。

注意:return 命令是 exit 命令的别名,两者是一样的。

程序的开始处,生成0~9的一个随机数,将其传递给 Example 进行判断,根据返回值显示不同的消息框。

下一步要实现 pecmd 中 team、find、ifex、forx 的等效命令,以使命令文件更简洁,在不使用命令文件时也能使用循环。

wtcmd v1.0 beta1 by shoulea
19:55 2010-9-15

==================================================================

wtcmd(by shoulea) v1.0 beta1 readme

发一个新的命令解释器,欢迎感兴趣的使用测试,并提出您宝贵的意见与建议。
程序目前实现的主要在核心部分,即命令文件/子程序调用,命令仅实现了几条,这种状况将迅速得到改善。
在下面的示例中,您可以使用与 pecmd 相同的方式使用本程序:命令文件(配置文件)或命令行直接调用。
下面请您将 wtcmd.exe 复制到系统目录:%SystemRoot%\System32,并打开命令提示符。
示例1:显示一个消息框
------------------------------------------------------------------
    wtcmd mess "Hello, world!" -c hello -i i -m oc -t 5000
您将看到一个具有“确定”和“取消”的消息框,其消息为“Hello, world!”,窗口标题为“hello”,5秒之后如果你不选择,对话框将自动关闭。
与 pecmd 大量使用符号进行分隔不同,wtcmd 使用了类 Unix 的命令行风格,使用选项指定参数,这可以更加灵活(也许有人会认为这会使命令更加冗长)。
在上一例中,“-c hello”指定了对话框的标题,“-c”中的“c”代表“caption”;
“-i i”中第一个“i”表示要指定对话框图标,而第二个“i”表示使用信息图标(information),一共有四种图标,你可以使用以下方式进行尝试:
    -i i        信息图标 information
    -i q        问号图标 question
    -i s        停止图标 stop
    -i w        警告图标 warning
也可将“-i i”完全省略,这样将没有图标。
“-m oc”指定了对话框的模式,其中的“oc”代表“确定 OK”与“取消 Cancel”,还有其它模式,请参考以后发公布的帮助文档,或者您也可以查看源代码。
注意:由于正处于测试阶段,这样缩写可能会发生改变,也欢迎对缩写提出宝贵建议,以便缩写的使用更为合理。
“-t 5000”表示如果5秒不选择,对话框将关闭。
通过这个例子您看到了 wtcmd 与 pecmd 的不同,并对本解释器有了一个感性的认识。
说明,每条命令都返回一个状态码,它可以被检测(对于 mess 命令,我们可以用这来判断用户的选择),详见后面的例子。

示例2:创建一个文件夹快捷方式
------------------------------------------------------------------
    wtcmd link d:\system c:\ -f
此命令将在 d: 下创建一个文件夹快捷方式,其目标为 C 盘。文件夹快捷方式终于得到了支持,普通快捷方式还是文件夹快捷方式,完全取决于其中的选项“-f”。
link 命令提供了 pecmd 相同的功能,但它使用选项予以指定,如下面的命令同样创建了文件夹快捷方式,但改变了图标:
    wtcmd link d:\system c:\ -f -i shell32.dll,7
是的您已发现选项常常可以省略,而且能以任意的顺序指定,如下面的命令与上命令效果相同:
    wtcmd link d:\system c:\ -i shell32.dll,7 -f
从这一点上讲,wtcmd 可以比 pecmd 更为灵活,增加选项、扩展起来也更加容易。
需要注意的是尽管解释器通常不区分大小写,但选项引导字符,如上面的“-i”和“-f”是区分大小写的(这样实现起来更容易一些)——因此建议对命令等均使用小写——欢迎对此发表意见。

示例3:挂载 WIM 镱像
------------------------------------------------------------------
    wtcmd moun d:\minint.wim Z:\Programs\minint
功能与 pecmd 差不多,不过多解释。
您可以使用“-w”选项使得镱像可写:
    wtcmd moun d:\minint.wim Z:\Programs\minint -w
为了卸载镱像,可以简单地传递一个目录:
    wtcmd moun Z:\Programs\minint
可以使用“-c”选项提交(commit)可写镱像发生的改变:
    wtcmd moun Z:\Programs\minint -c
wtcmd 对于卸载作为增强,你可以传递一个“-e”选项,e 代表“empty”,传递此选项时,解释器将尝试删除挂载目录的父目录或父目录的父目录等等中的空目录。
如本例假设执行
    wtcmd moun d:\minint.wim Z:\Programs\minint
前 Z 盘下并不存在 Programs 文件夹,则
    wtcmd moun Z:\Programs\minint -e
在卸载了镱像后,除删除 minint 目录外,Programs 目录也会被删除。您会发现这一功能有时是有用的。

示例4:删除文件
------------------------------------------------------------------
    wtcmd file -d \pagefile.sys
这一命令将删除所有驱动器下的“pagefile.sys”。wtcmd 增强了 pecmd 的 FILE 命令,以“\”开头的对象被认为与所有驱动器下的路径匹配。这一增强可能很有用,然而也可能有危险性,欢迎发表意见。
您可能奇怪,为什么前面的选项都在后面,而这里的选项“-d”却跑到了前面呢?
实际上我打算保持两种风格,一种是如“mess”、“link”和“moun”这种命令,它们的“参数 arguments”个数是固定的,这样将“选项 options”放到后面可避免头重脚轻;
另一种是 file 这类命令,它们可以接受多个“参数 arguments”,而且选项一般更简单一些,将选项放到前面,起类似“子命令”的作用。
    wtcmd file -d \pagefile.sys \*.tmp
除删除“pagefile.sys”外,还将删除各驱动根目录下的“tmp”文件。

示例5:使用命令文件
------------------------------------------------------------------
将下面文本存为“d:\first.txt”
    # This is a comment.
    mess "共传递了 $# 个参数。" -t 5000
执行命令:
    wtcmd load d:\first.txt a b c
您将获得一个消息框,告诉您传递了 3 个参数。
为了使命令文件(pecmd 所称配置文件)更为灵活,wtcmd 支持加载命令文件和调用子程序时传递参数,参数的个数用“$#”予以提取。
还有一系方法读取传递的参数,等待更详细的文档。

示例6:使用条件语句
------------------------------------------------------------------
条件语句 if 和循环语句 while 只能在命令文件中使用,将下面的文本存为“d:\second.txt”
    mess "是否要设置页面文件?" -i q -m yn -t 30000 -c question
    if return yes
        mess "正准备设置页面文件..." -t 3000
        # more code
    end
执行命令:
    wtcmd load d:\second.txt
将会看到一个对话框,如果选择“是”,将看到第二个对话框。
解释器还可以使用 while 循环语句,不过由于处理变量的 envi 命令还未完善,暂不给出示例。

wtcmd 目前才刚写出来,如果您什么的意义或建议,欢迎提出。刚出来的东西我们可以对其进行大量修改,以符合习惯,待以会成熟了,再改就比较困难了。
wtcmd 并不兼容 pecmd 配置文件,不过有许多地方是按 pecmd 的习惯来设计的。wtcmd 目前功能十分有限,您应该仅将其作为 pecmd 的补充来使用。
承诺永久公开 wtcmd 源代码,您可以修改以符合自己的需求,但修改后必需公开修改前后的源代码,并不能以 wtcmd 命令名解释器,源代码的任何部分也不能用于商业用途。
wtcmd 的构架十分灵活,可以这样说,任何一个主函数为原型“int wmain(int argc, wchar_t *argv[]);”的 C 程序均可通过修改 wtcmd 源代码的 3 处直接集成到解释器中。
老九长期致力于 pecmd 的维护,热切期待您的宝贵意见!

wtcmd v1.0 beta1 by shoulea
23:53 2010-9-13

[ 本帖最后由 shoulea 于 2010-11-24 23:20 编辑 ]

image.jpg (95.79 KB, 下载次数: 82)

image.jpg

wtcmd v1.0 beta1.rar

39.57 KB, 下载次数: 221, 下载积分: 无忧币 -2

wtcmd(by shoulea) v1.0 beta1

wtcmd(by shoulea) v1.0 beta2.rar

44.27 KB, 下载次数: 146, 下载积分: 无忧币 -2

calcexpr.rar

107.08 KB, 下载次数: 157, 下载积分: 无忧币 -2

wtcmd(by shoulea) v1.1.rar

45.12 KB, 下载次数: 239, 下载积分: 无忧币 -2

wtcmd v1.3 beta1.rar

65.35 KB, 下载次数: 90, 下载积分: 无忧币 -2

99#
 楼主| 发表于 2010-11-25 23:29:23 | 只看该作者
beta2 完成,添加了各种字符串处理函数。

wtcmd v1.3 beta2.rar

95.35 KB, 下载次数: 29, 下载积分: 无忧币 -2

回复

使用道具 举报

98#
 楼主| 发表于 2010-11-24 23:21:52 | 只看该作者
改动非常多,代码框架基本形成,不会再发生很大变化,功能增强了许多,还有一些功能正在加入。

最近很忙,帮助没时间写,会编程的可拿去测试,用VS2003发的源代码。

可执行文件为控制台调试版,用“wtcmd learn”进入交互界面。

wtcmd v1.3 beta1.rar

65.35 KB, 下载次数: 21, 下载积分: 无忧币 -2

回复

使用道具 举报

97#
 楼主| 发表于 2010-11-14 11:00:48 | 只看该作者

回复 #98 jianliulin 的帖子

谢谢你的鼓励啦,我会向那方面努力的。另外现在直接改用VS2003写编写wtcmd了,因为我觉得这样调试更方便一些,虽然这样对代码的管理不太灵活,各有取舍吧,相信这样以后拿到VS2008上就不会出现不能编译的情况了。
回复

使用道具 举报

96#
发表于 2010-11-14 09:14:28 | 只看该作者
原帖由 shoulea 于 2010-11-13 23:38 发表
对于grub4dos我确实充满了向往,不过自己的水平自己清楚,现在还差得远呐,那些系统底层的东西一点都不了解。说到脚本解析,我非常欢迎有需要的把wtcmd的模块拿去修改组装。另外grub2好像在向这一方面努力,那个 ...


维护grub4dos 并不定就需要懂底层的,可以维护应用层的东西,比如现在chkpci ,wenv 等,wenv 和你的脚本很像。grub2已经支持lua脚本,且功能十分强大,要是你有兴趣去协助bean开发burg那也是启动爱好者的福气

[ 本帖最后由 jianliulin 于 2010-11-14 09:15 编辑 ]
回复

使用道具 举报

95#
 楼主| 发表于 2010-11-13 23:38:23 | 只看该作者

回复 #96 jianliulin 的帖子

对于grub4dos我确实充满了向往,不过自己的水平自己清楚,现在还差得远呐,那些系统底层的东西一点都不了解。说到脚本解析,我非常欢迎有需要的把wtcmd的模块拿去修改组装。另外grub2好像在向这一方面努力,那个可能会更牛B一些。wtcmd那些控制结构虽然看起来工作得很好,但其实现其实是很低级的,效率也不高,还是那个词”编译原理“啊……
回复

使用道具 举报

94#
发表于 2010-11-13 20:59:34 | 只看该作者
建议lz参与grub4dos的开发,要是能让grub4dos支持你的脚步解析就功德无量了!!!
回复

使用道具 举报

93#
 楼主| 发表于 2010-11-13 17:29:11 | 只看该作者

回复 #94 2010hook 的帖子

我的目的不是要替换PECMD,要知道我并非什么都懂的,对于怎样启动到explorer.exe和驱动的加载问题我是一窍不通,这就决定了只能用PECMD来引导。

这个解释器只是最初一些想法发展而来,希望能在某些工作上比使用其他批处理工具更方便一些,并提供一个方便扩展的机制及开放的源代码,希望大家一起努力创造出一个易于使用的工具。

wtcmd很久没有更新了,一方面是没有较执续的空闲时间——如国庆长假之类——因为我也得上课,兴趣也常会转移到其他方面;另一方面是对wtcmd的设计处于徘徊之中,追求完美这个糟糕的想法——害人不浅——常使我将代码改了又改,而最后又不了了之,反而连最基本的都没做好。对各位支持者,我深表歉意!

不过大家放心,在最坏的情况下,我会在寒假弄好下一个版本(其特性见顶楼),或者哪时有“较执续的空闲时间“,我也会认真而努力地去弄。
回复

使用道具 举报

92#
发表于 2010-11-13 07:02:20 | 只看该作者
请问怎么替换PECMD?要修改那些文件?怎么修改?
谢谢!

PS:解决了!用注册表编辑器加载配置单元 SETUPREG.HIV ,然后搜索pecmd
我知道两者的定位,我只是想试用一下而已。

[ 本帖最后由 2010hook 于 2010-11-14 02:54 编辑 ]
回复

使用道具 举报

M
91#
发表于 2010-10-24 16:46:28 | 只看该作者
刚看见,特来用心支持下楼主和各位高人。确实了不起。
回复

使用道具 举报

90#
 楼主| 发表于 2010-10-18 23:27:20 | 只看该作者
努力工作中……

[ 本帖最后由 shoulea 于 2010-10-21 12:52 编辑 ]
回复

使用道具 举报

89#
发表于 2010-10-17 15:00:15 | 只看该作者
希望能尽快完善,老九有些定义歧义太多,譬如“!”的应用。如IFEX %W%\MMCW7.7z,EXEC =!CMD.EXE /C "XXX",就出现隐藏方式运行和ELSE冲突。有时弄得没办法那怕只有一个语句也逼得去用CALL。想起来真没劲的。

还有TEXT中出现格式关键字母也出问题,就连text THIS IS A TEST都显示不全。
不过有些功能的实现要做出来还是要花大量的时间的。
回复

使用道具 举报

88#
发表于 2010-10-13 10:19:32 | 只看该作者

回复 #89 lxl1638 的帖子

的确是这么回事,C太难了,记得我开始接触C的时候,搞个无图形界面的学生成绩管理系统都晕倒过两次,为了那次考试死了好多脑细胞!
回复

使用道具 举报

87#
发表于 2010-10-12 11:48:31 | 只看该作者
原帖由 myitmx 于 2010-10-12 11:28 发表
最好的普及方法就是找个高手做一个经典的成品出来,就像老毛桃用老九的pecmd做的经典PE一样,现在pecmd已经深入人心,所以要求你的wtcmd一问世就必须是经典的开山之作,方便灵活的集成方法、能pecmd所不能的高效 ...

脚本语言解释器这东西是两头难,功能强大的可能难学难用,如 c/c++ 语言及解释器;
简单易用易学的,可能就是功能有限,如 VB语言、AutoIt 脚本等。
做脚本解释器更是难上加难。
回复

使用道具 举报

86#
发表于 2010-10-12 11:28:26 | 只看该作者

回复 #1 shoulea 的帖子

最好的普及方法就是找个高手做一个经典的成品出来,就像老毛桃用老九的pecmd做的经典PE一样,现在pecmd已经深入人心,所以要求你的wtcmd一问世就必须是经典的开山之作,方便灵活的集成方法、能pecmd所不能的高效率解释器才是早日普及的真理,祝你早日成功!
回复

使用道具 举报

85#
发表于 2010-10-12 10:26:34 | 只看该作者
很强大,支持一个。.
回复

使用道具 举报

84#
发表于 2010-10-12 09:11:45 | 只看该作者
确实是高人,关注很久了,可惜源码下载了,弄了几次也没办法编译。当然了,是自己太菜了。呵呵。
回复

使用道具 举报

83#
发表于 2010-10-12 09:01:59 | 只看该作者
高手啊,强人啊,膜拜一下。代码看不懂也要收藏。
回复

使用道具 举报

82#
发表于 2010-10-9 21:09:38 | 只看该作者
太高级,没时间折腾,用现成的pe
回复

使用道具 举报

81#
发表于 2010-10-9 20:52:49 | 只看该作者
没看明白。啥意思呢。
回复

使用道具 举报

80#
发表于 2010-10-9 17:39:44 | 只看该作者
楼主很强悍,发展的挺快
回复

使用道具 举报

79#
发表于 2010-10-7 18:44:01 | 只看该作者
支持LZ继续,

BUT,等功能齐全,没有明显错误时再来学习.
学习一个没有开发完善的工具,在我看来是没啥意思的
回复

使用道具 举报

78#
发表于 2010-10-7 14:31:03 | 只看该作者
功能越来越强大了,持续关注。
回复

使用道具 举报

77#
发表于 2010-10-7 14:03:47 | 只看该作者
持续关注中...
回复

使用道具 举报

76#
 楼主| 发表于 2010-10-3 17:43:01 | 只看该作者
原帖由 freesoft00 于 2010-10-2 19:56 发表
网上有pe下注册表重定向的。Runscanner 这个好象包里面有源代码的。你下载看看

期待这个命令解释器的完善,在适当的时候希望作者能出一个用这个解释器做的pe,来个示例。
100812

也有可能那些是语言文件 ...


看了看,其功能和云端使用的技术似乎是一样的。云端其实主要就用了两种技术,一是注册表重定向,二是文件的重定向,如果我们掌握这两种技术,就能自由制作绿色软件,以后好好研究一下。
回复

使用道具 举报

75#
 楼主| 发表于 2010-10-2 23:44:09 | 只看该作者
原帖由 wbz2cdma 于 2010-10-2 22:03 发表
看了楼主的wtcmd源代码,真后悔当初没把C学好学透彻。现在再学C不晚吧。


呵呵,只要亲自写代码多了,就会越来越熟练。从大一到现在,正是在从学习C语言开始,经过数据结构和数值分析,及平时的练习,一点点提高的,实际上通过写这个 wtcmd,收获的更多。
回复

使用道具 举报

74#
发表于 2010-10-2 22:03:51 | 只看该作者
看了楼主的wtcmd源代码,真后悔当初没把C学好学透彻。现在再学C不晚吧。
回复

使用道具 举报

73#
发表于 2010-10-2 21:08:23 | 只看该作者
继续发展说不定什么时候可以把ac3顶下去了,干脆商业掉算了:)

持续关注中.
回复

使用道具 举报

72#
发表于 2010-10-2 19:56:34 | 只看该作者
网上有pe下注册表重定向的。Runscanner 这个好象包里面有源代码的。你下载看看

期待这个命令解释器的完善,在适当的时候希望作者能出一个用这个解释器做的pe,来个示例。
Runscanner.rar (75.57 KB, 下载次数: 39)

也有可能那些是语言文件的,不是就算了。反正这个软件就可以了,也没有必要再重复劳动力。

[ 本帖最后由 freesoft00 于 2010-10-2 19:58 编辑 ]
回复

使用道具 举报

71#
 楼主| 发表于 2010-10-2 17:32:03 | 只看该作者
原帖由 lmle 于 2010-10-2 17:25 发表
咱论坛的wang6071大大(wsyscheck作者)编写的Scanvirus能处理离线注册表。他应该有办法。可惜好久没看见他的踪影了。


对啊,所以我认为就是应该公开源代码嘛,只有有了源代码,后来者才能进行增强,创建出更棒的工具。
回复

使用道具 举报

70#
发表于 2010-10-2 17:25:32 | 只看该作者
咱论坛的wang6071大大(wsyscheck作者)编写的Scanvirus能处理离线注册表。他应该有办法。可惜好久没看见他的踪影了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-16 03:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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