![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 22:43 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【cmd人性化贡献】愿意真正为cmd做点东西的进 |
| 可打印版本 951 / 9 |
| 第1楼 plp626 | 发表于 2009-05-29 09:27 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
【cmd人性化贡献】愿意真正为cmd做点东西的进 今天发了两个帖子解决了问题,很感谢论坛的会员们
接着 突发奇想,再继续发散思维下特有如下想法,想让cmd人性化点 大家都知道脚本中可以用call方法调用子过程,但是这种方法很麻烦 要人为设定返回变量,然后再用,习惯了高级语言后对此种调用发法很不爽,还有cmd不支持浮点运算,数学函数自然不能用,(论坛里有个math.exe,就很好大家可以搜索关键字math,正式这个math.exe让我产生此想法) 提议写个解释器(命名expr),把子过程的call方法封装 对子过程的调用用高级语言的 varable=fun(arg1,arg2,,,) 形式,对于有返回值的函数用等号去接受,(这一点p可以说是得天独厚,是大多数语言无法比拟的,因为它没有变量类型) expr var=fun1(arg1, arg2, ... fun2(p1, p2, ...)) ; var2=fun3(...) ; fun4(....); 现在想到一个问题就是如果expr作为三方工具,那么var的值只在expr的生存期有效,当expr将控制权返回给cmd时,用 return var; 却要求为int型,而且cmd能接受的只有errorlevel变量,看来要做不只有这些了 若再换一种思路,不return var; 而是printf("%s", var); 然后再写个bat脚本for /f 去抓取信息, 于是产生用纯批处理写expr的想法,但是效率可想而知, 于是还是回到用 c语言+bat的for /f的思路 若真是喜欢cmd(linux的强大正是有众多的fans一点一滴地积累而成)愿意给它做点东西,开始吧 |
|
| 第2楼 slore | 发表于 2009-05-29 10:00 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
给个系统环境变量保存char类型的结果,integer就用errorlevel
当然都用系统环境变量也可以 |
|
| 第3楼 netbenton | 发表于 2009-05-29 11:00 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
这样调用子程序,并返回结果,也不是很麻烦呀?
|
|
| 第4楼 plp626 | 发表于 2009-05-29 11:30 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by netbenton at 2009-5-29 11:00 AM: |
|
| 第5楼 knoppix7 | 发表于 2009-05-29 23:27 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
弄过这个东西..
卡在对括号的划分上.. |
|
| 第6楼 knoppix7 | 发表于 2009-05-29 23:28 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
只是想到过一个框架..
@echo off setlocal (开不开延迟自己看着办.不过开一层有好处) Code. Code.. .. . Endlocal&set return=%结果% 省的清理临时变量了.而且结果也能传回去. |
|
| 第7楼 everest79 | 发表于 2009-05-30 01:08 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
我记得C语言有个
system(cons char *command) expr var=... int main(char *agv){ char *ar1="var=" char *ar2="..." char *name=new char[200]; strcat(name,ar1); strcat(name,ar2); system("set name"); return 0 } |
|
| 第8楼 plp626 | 发表于 2009-05-31 04:16 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
其实想一想 C 的 main 函数 原型
int main(....) 没见过(起码我没见过) *char main (....) 就知道 这个想法的难度 |
|
| 第9楼 plp626 | 发表于 2009-05-31 04:19 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
鞥。。。
我发现不是这样简单的思考,难道。。。。? |
|
| 第10楼 knoppix7 | 发表于 2009-05-31 05:45 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
好吧...我只能围观了..
C之类的见都没见过... 能直接用内存写入把命令写入CMD就爽了... 星际上我是干过这事...可CMD连数组都没有我到哪里下手去..XD |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |