Board logo

标题: [其他] 【咨询】如果自己做一个CMD? [打印本页]

作者: defanive    时间: 2011-8-22 22:13     标题: 【咨询】如果自己做一个CMD?

如果自己做一个CMD的话,大家有什么看法?
这是个非常大的工程,所以如果觉得没有什么实用的话就不做了

做的话暂时有想到下来的目标
1、兼容当前的批处理、第三方
2、提供更开放的接口给予第三方直接进行控制批处理
3、可以直接调用API
4、多线程
5、增强各种命令

如果有需求的话就准备动手做
作者: batman    时间: 2011-8-22 22:18

个人觉得很有需求,在精神上强烈支持。。。
作者: fastslz    时间: 2011-8-22 22:45

既然是非常大的工程!最低运行环境?何种兼容模式?
作者: defanive    时间: 2011-8-22 22:55

回复 3# fastslz


最低运行环境应该没有要求,VC6开发的话只要有依赖就可以,依赖的文件是每台电脑都有的(64位的话可能要专门用不同的)
兼容的话,希望能做到跟系统的CMD一样执行批处理能有同样的结果
作者: BillGates    时间: 2011-8-22 23:00

加油吧,希望早日开发成功。
作者: raymai97    时间: 2011-8-22 23:14

哇~ 这将是一个很难的任务啊~ 如果楼主觉得自己做得到的话,当然没有问题~
有了新的cmd,我就可以用比较简单的批处理命令来做到现在只有vbs/c++语言可以做到的东西~ 想想看那该多好啊~

加油咯!
作者: Hello123World    时间: 2011-8-22 23:28

一个人做可能会累死,建议找几个有志向的一起写(我虽然也想加入,但高级语言学的哗啦哗啦,想也是白想)
作者: missll    时间: 2011-8-22 23:39

强烈的 精神上的  支持.
作者: defanive    时间: 2011-8-22 23:59

回复 6# raymai97


    不会增加很多提供特定功能的命令,但会提供一些基本命令,例如字符串处理、API等
作者: vsbat    时间: 2011-8-23 00:15

说实话。。很有挑战性 cmd.exe 200多KB
作者: qc5111    时间: 2011-8-23 01:53

本帖最后由 qc5111 于 2011-8-26 13:13 编辑

加油,希望用VC写,把源码发上来!!!!
作者: fastslz    时间: 2011-8-23 07:05

先不说支持32位MS-DOS+VC库,Win98+VC库就能运行这个CMD就是一个突破,还有WinPE+VC库。也就是说没有CMD的情况下也能保证这个CMD能用吗?
作者: CUer    时间: 2011-8-23 09:34

回复 6# raymai97


能否举几个例子说说你经常用到的哪些东西是VBS能做但BAT不能做的?也好让楼主在开发过程中做个参考
作者: raymai97    时间: 2011-8-23 10:31

回复 13# CUer


额~ 比如说对话框吧~ 在批处理下要做挺麻烦的~ 不是通过第三方软件,就是用临时vbs。如果用msg命令,效果并不怎么理想
还有cmd好歹也该有个类似ckey和sleep.com的功能在里面吧~ 这些功能挺好用的~
还有后台也是个挺麻烦的事~ 如果是批处理的话,一就是通过临时vbs隐藏自己,二如果cmd窗口会一直在的话,可以用“start /b 批处理”的方法,但也不理想。
要跟后台的批处理对话更是需要临时文件,或改变自己的属性等麻烦的方法~
所以总结,我认为新的cmd应该有以下功能~

1. 把ckey, sleep.com 等的功能加到cmd里面~
2. 提供一个方法来使两个批处理能对话,比如可以设置membat命令,用法是membat 《事先约好的号码》 《变量改变》,比如membat "87112" set o=ok
3. 提供更好的对话框功能,并设置一种可以让批处理隐藏运行的命令。
4. 允许多线程,但为避免某些“有问题”的批处理导致电脑崩溃,设置最多4个,也就是说一个批处理的start “” %0的弹窗命令将只能弹出4个,但同时可以让一个批处理能在一个时间做4个东西。
5. color选项太少,应该增多,并设置一种命令以方便我们实现类似“彩色批处理”的效果~

就这样多,暂时不鼓励加入什么画图形的动能~
作者: cjiabing    时间: 2011-8-23 11:20

1、数字计算,至少能支持最少两位数的浮点运算吧,最高10000*10000差不多。
2、时间计算,提供一种精确到微秒的时间计算。
3、再开放一个函数库,提供公共函数库和自定义函数库。
4、整合基础的文本编辑功能,使得替换、提取html类的文本都显得简单些。
5、后台通信,一个桥,支持各个程序相互交流。
6、对网络的支持更广泛,使得在cmd上可以浏览网页、下载。这是使得批处理回到现代网络生活的一个基础。——这个有点超现实了,不过w3m可以做到。
7、增强批处理对系统方面的操作,比如,让taskkill能够杀掉更高一级的进程。
8、使得cmd对一行代码的支持可以容纳标签等。
9、颜色、图片(动画就不苛刻了)、声音(这个目前不是问题)等功能一定要有,而且要与时代接轨。支持鼠标、键盘一类的也太重要了。使得开发的批处理程序有更多的实用性和适应性。——这个可能朝着高级化发展了,不符合cmd只是基于windows的初衷。但,能走多远算多远,不是吗。
10、bat2exe这类的也集成了。
11、集成ps方面的dos。——可能没必要,似乎,他们有需要。
12、提供一种开放接口给三方,使得三方能够直接进入新的cmd,而不必为路径设置苦恼。
13、……
-------------------------------------------------------
啰嗦了,看来大家对批处理的短板也看得多了,忍受得多了。工程做起来非比寻常,艰难。一个人是个痛苦的差事,需要有人支持和协助。

基本的开发思路,需要分几步走:
1、实现基础功能。使得你的新cmd能够实现原cmd的功能。这个是所有工作的基础。
2、集成现有批处理开发方面的成果。比如时间计算、sed、wget等。这使得新cmd能超越原有的cmd。
3、重点创新解决批处理急需的一些大问题。比如颜色、定位、图片、网络等。使得批处理更接近生活实践,获得更大的拓展空间。
作者: cjiabing    时间: 2011-8-23 11:21

1、数字计算,至少能支持最少两位数的浮点运算吧,最高10000*10000差不多。
2、时间计算,提供一种精确到微秒的时间计算。
3、再开放一个函数库,提供公共函数库和自定义函数库。
4、整合基础的文本编辑功能,使得替换、提取html类的文本都显得简单些。
5、后台通信,一个桥,支持各个程序相互交流。
6、对网络的支持更广泛,使得在cmd上可以浏览网页、下载。这是使得批处理回到现代网络生活的一个基础。——这个有点超现实了,不过w3m可以做到。
7、增强批处理对系统方面的操作,比如,让taskkill能够杀掉更高一级的进程。
8、使得cmd对一行代码的支持可以容纳标签等。
9、颜色、图片(动画就不苛刻了)、声音(这个目前不是问题)等功能一定要有,而且要与时代接轨。支持鼠标、键盘一类的也太重要了。使得开发的批处理程序有更多的实用性和适应性。——这个可能朝着高级化发展了,不符合cmd只是基于windows的初衷。但,能走多远算多远,不是吗。
10、bat2exe这类的也集成了。
11、集成ps方面的dos。——可能没必要,似乎,他们有需要。
12、提供一种开放接口给三方,使得三方能够直接进入新的cmd,而不必为路径设置苦恼。
13、……
-------------------------------------------------------
啰嗦了,看来大家对批处理的短板也看得多了,忍受得多了。工程做起来非比寻常,艰难。一个人是个痛苦的差事,需要有人支持和协助。

基本的开发思路,需要分几步走:
1、实现基础功能。使得你的新cmd能够实现原cmd的功能。这个是所有工作的基础。
2、集成现有批处理开发方面的成果。比如时间计算、sed、wget等。这使得新cmd能超越原有的cmd。
3、重点创新解决批处理急需的一些大问题。比如颜色、定位、图片、网络等。使得批处理更接近生活实践,获得更大的拓展空间。
作者: defanive    时间: 2011-8-23 11:57

回复 16# cjiabing
1-5都会提供基本的内部命令
开放给第三方对接口会更多,更加强大
至于其他功能,可以调用API都可以自己实现
还会新进一些编程思想如消息驱动等
不过这一切都得在把基本功能做出来的前提上
至于批处理的语法不会做特别更改,以维持原貌为佳
作者: lxzzr    时间: 2011-8-23 13:55

我弱弱的问问:开发这个CMD有什么...意义,莫喷我^_^
作者: cjiabing    时间: 2011-8-23 16:41

回复 17# defanive


    大家说说玩而已,真正去做需要有足够的能力和毅力。看看谁人能够挑战了。精神百分百支持~
作者: Seter    时间: 2011-8-25 11:12

快速存取变量需要平衡树和各种奇葩的哈希……大数或者小数处理要各种二分压位……等等等等……加油吧……
作者: defanive    时间: 2011-8-25 17:00

回复 20# Seter
这些东西不需要做。。。
因为CMD只是简单的存为环境变量。。。
这样的拓展性似乎更好,第三方操作变量不需要专门提供接口,只需要调用API就可以了
存为环境变量的时候系统已经排序好了
作者: qc5111    时间: 2011-8-26 13:12

加油,希望用VC,并把源码发上来!
作者: guaiwu    时间: 2011-8-27 17:43

给予支持。 但能不能给力就是另外一件事了、
作者: 冷玉公子    时间: 2011-8-29 13:06

那 Power Shell 怎么办呢
作者: caruko    时间: 2011-8-31 17:46

本帖最后由 caruko 于 2011-8-31 17:48 编辑

这个,精神上万分支持。
但是工程量真的很大。

而且意义不是很明显,最多相当于一个 windows 下的 perl,python之类的东西。
当然,这个CMD多半是调用WINDOWS的API,无需太多支持库而已。
作者: plp626    时间: 2012-6-23 14:01

cmd.exe 200K,有很多是帮助信息, 如果自己做的话,

mycmd.exe 有望30KB 完成cmd所有的功能(因为都是掉内存中已加载好的函数,应该很省代码)并提供大量接口;
作者: cb02356828    时间: 2012-6-23 14:12

直接集成常用第三方如何
作者: garyng    时间: 2012-6-27 11:42

本帖最后由 garyng 于 2012-6-27 11:43 编辑

话说 制作一个CMD似乎是个很难的工作
但是 有人已经模拟了CMD啦  似乎是开源的 去找找ReactOS 这操作系统几乎跟NT的一模一样 里面的源码对需要了解系统底层的大大们很有帮助!
作者: lllsoslll    时间: 2012-6-27 12:54

回复 28# garyng


    很不错, 开发者是个高中生。。。 牛叉的孩子。。。
作者: garyng    时间: 2012-7-3 01:40

回复 29# lllsoslll


    ReactOS的开发者是高中生么?这个OS项目比我还老呢。。。
作者: nishizhuma    时间: 2012-7-4 14:38

我发现第三方调用时有个通病,就是效率不够,希望 The New Command 能内置一些实用的第三方,无需经常调用,可以加个http://bbs.bathome.net/thread-5177-1-1.html进去
作者: garyng    时间: 2012-7-5 19:21

回复 31# nishizhuma


    支持鼠标其实用API就能搞定了  话说从调用3方到返回真的需要很长的时间啊 影响效率的说。。。
作者: 狗屁不通    时间: 2012-8-24 13:22

精神上基于强大支持!!
作者: Demon    时间: 2012-8-31 21:41

没什么意义,就算开发出来也不会有多少个人用。
作者: 3dnowex    时间: 2012-10-1 20:50

本帖最后由 3dnowex 于 2012-10-1 20:51 编辑

强烈支持呀~reactos有cmd.exe的源码,不过一些细节与win下的cmd不太同。android ndk里面有个win32 binary的单文件sed.exe,4.2.1版本的win7x64下可用,之前坛子里的djgpp编译的sed.exe在64下跑不了。
作者: Taurus    时间: 2012-12-14 23:51

在Win OS造回CMD沒意義

把Linux 的Command Line和Shell移到Win OS , 或把WIN CMD移到Linux才好玩




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2