Board logo

标题: 请问: 批处理是靠什么程序来解释执行的? [打印本页]

作者: pengfei     时间: 2006-9-15 04:27    标题: 请问: 批处理是靠什么程序来解释执行的?

像vbs脚本是靠WScript.exe来解释执行的.
不知bat是用通过什么程序运行的. 一些朋友说是command.com
但我试过都不行, 包括cmd.exe.

[ Last edited by pengfei on 2006-9-16 at 08:43 ]
作者: kcdsw     时间: 2006-9-15 07:06
看来你没理解批处理

commad.com是用来解释内部命令的

而dos中称的外部命令其实就是一个一个的小程序

批处理嘛  范围就更广了   大多数程序都可以直接来执行 获得你所需要的操作

如 dos群里某个帅哥 举的例子

"C:\Program Files\Internet Explorer\IEXPLORE.EXE" www.qq.com



start www.qq.com

其实这些语句写进bat 或者cmd文件内都能执行  都能算是批处理

[ Last edited by kcdsw on 2006-9-15 at 07:10 ]
作者: pengfei     时间: 2006-9-15 09:16
可能是我没有理解批处理脚本的真正意义吧, 但WIN32平台下, 一些后缀关联的文件, 直接用鼠标把文件拖向执行程序, 就会自动打开, 如, wma等, 拖向real播放器.就会自动播放.
而把bat拖向command.com却没有执行脚本, 所以心中纳闷了...

[ Last edited by pengfei on 2006-9-16 at 08:10 ]
作者: GOTOmsdos     时间: 2006-9-15 09:33
可能二楼的例子不是真正意以上的批处理

我感觉,所谓的批处理应该大体上分为两种:
狭义的:(真正意义上的)
只含批处理的关键字(如: set,for,in ,if, exist ,goto 等等)和 DOS内部命令组成的脚本
广义的:(二楼说的应该属于此类)
把独立的程序名写进脚本中
作者: htysm     时间: 2006-9-15 22:52
这个问题应该留给微软去解决。
作者: electronixtar     时间: 2006-9-16 03:10
bat和exe一样不需要解释系统自动执行。调用bat可以用 cmd /c bat路径
作者: pengfei     时间: 2006-9-16 08:19


  Quote:
Originally posted by electronixtar at 2006-9-16 03:10:
bat和exe一样不需要解释系统自动执行。调用bat可以用 cmd /c bat路径

我个人认为批处理是一个更接近脚本的可执行文件.  它还是要依赖各种内部和外部命令来完成.
而不是像exe那样, 不依赖其他程序能自己单独完成某件事情. 他是二进制的代码, CPU可以直接识别处理.
批处理却是一条条的dos命令, 不用我们一条条地往shell中输入.
但调用这一条条的指令, 在DOS平台下运行, 又是怎么实现的呢???

[ Last edited by pengfei on 2006-9-16 at 08:33 ]
作者: electronixtar     时间: 2006-9-16 08:43
看看这个:

  Quote:
C:\>assoc .exe
.exe=exefile

C:\>ftype exefile
exefile="%1" %*

C:\>assoc .bat
.bat=batfile

C:\>ftype batfile
batfile="%1" %*

C:\>assoc .cmd
.cmd=cmdfile

C:\>ftype cmdfile
cmdfile="%1" %*

C:\>

新建一个bat,什么都不输入,双击,XP会提示:无效的Win32程序,呵呵,这充分说明了bat的特殊性
作者: pengfei     时间: 2006-9-16 08:50
是不是批处理中没有任何命令, 所以command没有执行成功, 提示出错啦...
这就更加证实, 操作系统通过解释BAT中命令, 再调用DOS平台下的EXE程序来执行的!

[ Last edited by pengfei on 2006-9-16 at 08:54 ]
作者: kcdsw     时间: 2006-9-17 03:07


  Quote:
我个人认为批处理是一个更接近脚本的可执行文件.  它还是要依赖各种内部和外部命令来完成.
而不是像exe那样, 不依赖其他程序能自己单独完成柠...

不也是将参数传递给exe 或者com程序