批处理之家's Archiver

CrLf 发表于 2015-5-18 16:55

CSet64 v1.0 用于64位环境的简化版ConSet

制作 CSet64 是因为在 64 位环境下的 ConSet 不能正常赋值,而又找不到替代品
ConSet 的原作者已无法联系,没法用源码重新编译,索性自己做了一个阉割版的

功能和语法都是模仿原程序的逻辑,功能只减不增,但基本的几个功能都尽量实现了
至于函数和三目运算符什么的,没有好办法,就不搞了

部分代码来自网络,有大幅改动:
主体功能基于:[url]http://www.bathome.net/viewthread.php?tid=19036[/url]  (4楼)
算式解析部分基于:[url]http://bbs.bccn.net/thread-245044-1-1.html[/url]

附 ConSet 链接:[url]http://www.bathome.net/viewthread.php?tid=12865[/url]


[quote]CSet64  v1.0  简化版的 ConSet (64位)

[url]http://www.bathome.net[/url]     CrLf

CSet64 [options] [name[=[value]]]
CSet64 [/E][/N][/V] [ [/RANDOM] | [/D string] |
        [/A expr|<file] | [ [</C|/P[H]> name=value] |
        [/M | /U | /T name[=[value]]] |
        [name[=[value|`command`]]]]]

/?        显示帮助
/HELP        显示帮助

/A        'expr' 允许计算一个表达式,支持浮点运算
        格式: "variable=expression,variable=expression,..."

        EX: CSet64 /A "cents=523,dollars=cents/100"

        支持的运算符:
        ( )        组
        ++ --        自加自减
        **         次方
        !expr ~        一元位运算
        expr!        阶乘
        / *        算数运算符(\ 运算符用于整除)
        \ %
        + -
        >> <<        位移
        >= > <= <        条件运算
        != ==
        &        按位与r
        ^        按位异
        |        按位或
        &&        逻辑与
        ||        逻辑或
        ,        逗号运算符

/C        将 value 连接到 VAR 变量后

        EX: CSet64 /C VAR=value

        CSet64 /C VAR= %NewElement%

/D        删除指定范围的变量,下例删除 MyVars_ 开头的变量

        EX: CSet64 /D MyVars_
/E        扩展变量

        EX: CSet64 /E VAR=%%VAR2%%

/H        用在 /P 中,可隐藏输入

        EX: CSet64 /PH PassWord=What is your password?

/M        设置系统环境变量,影响本机所有用户

        EX: CSet64 /M var=value

/P        提示信息,并等待一行输入

        EX: CSet64 /P UserName=What is your name?

/T        设置临时环境变量,注销后失效

        EX: CSet64 /T var=value

/U        设置当前用户的环境变量

        EX: CSet64 /U var=value

/PID[=PID]        操作指定 PID 的进程(不能用于罗列其他进程的变量表)

        EX: CSet64 /PID=245

/RANDOM        获取一个随机数,以时间和进程 PID 做种子

        EX: CSet64 /RANDOM


其他说明:
支持从重定向获取输入,或以 ` 的形式启用匿名管道(就像 for /f 一样)

        CSet64 var=`DIR /B^|FIND ".cmd"`

制作 CSet64 是因为在 64 位环境下的 ConSet 不能正常赋值,而又找不到替代品
ConSet 的原作者已无法联系,没法用源码重新编译,索性自己做了一个阉割版的

功能和语法都是模仿原程序的逻辑,功能只减不增,但基本的几个功能都尽量实现了
至于函数和三目运算符什么的,没有好办法,就不搞了

部分代码来自网络,有大幅改动:
主体功能基于:[url]http://www.bathome.net/viewthread.php?tid=19036[/url]  (4楼)
算式解析部分基于:[url]http://bbs.bccn.net/thread-245044-1-1.html[/url][/quote]

可执行文件压缩包,内含 32 位与 64 位版本,但需要使用 32 位的情况建议改用 ConSet:
[url]http://bcn.bathome.net/s/tool/index.html?key=CSet[/url]
源代码,使用 gcc 编译:
[attach]8704[/attach]

CrLf 发表于 2015-5-18 18:27

主要用途:[code]1、复杂浮点运算
2、将重定向或管道输入赋值给变量
3、变量内容可以跨行
4、读写其他进程变量
5、永久修改本地变量[/code]其实都是 ConSet 已有的功能,区别只在于支持 64 位,所以 ConSet 适用的情况下建议还是用 ConSet

tmplinshi 发表于 2015-11-25 13:41

[img]http://tu.etang.info/uploads/2015/11/2015_11_25_134004.png[/img]

win7 x64

CrLf 发表于 2015-11-25 14:02

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=178356&ptid=35723]3#[/url] [i]tmplinshi[/i] [/b]


    试试 32 位 cmd 能否运行 conset?

tmplinshi 发表于 2015-11-25 14:24

[i=s] 本帖最后由 tmplinshi 于 2015-11-25 14:54 编辑 [/i]

跟 64 位 CMD 一样,不能正常赋值。

CrLf 发表于 2015-11-25 15:07

[i=s] 本帖最后由 CrLf 于 2015-11-25 15:08 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=178363&ptid=35723]5#[/url] [i]tmplinshi[/i] [/b]


    如果 conset 在 32 位下出问题,那 cset64 也会出同样的问题,因为是使用基于同一套 API 实现 HOOK 的
    猜测有几种可能:[code]1、杀软拦截 API 注入
2、CMDRead 或其他的控制台增强工具造成干扰
3、系统差异[/code]

tmplinshi 发表于 2015-11-25 15:26

好吧,估计是我系统哪里异常。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.