|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『楼 主』:
请问: 批处理是靠什么程序来解释执行的?
像vbs脚本是靠WScript.exe来解释执行的.
不知bat是用通过什么程序运行的. 一些朋友说是command.com
但我试过都不行, 包括cmd.exe.
[ Last edited by pengfei on 2006-9-16 at 08:43 ]
|
|
2006-9-15 04:27 |
|
|
kcdsw
中级用户
积分 404
发帖 179
注册 2006-3-30
状态 离线
|
『第
2 楼』:
看来你没理解批处理
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 ]
|
|
2006-9-15 07:06 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
3 楼』:
可能是我没有理解批处理脚本的真正意义吧, 但WIN32平台下, 一些后缀关联的文件, 直接用鼠标把文件拖向执行程序, 就会自动打开, 如, wma等, 拖向real播放器.就会自动播放.
而把bat拖向command.com却没有执行脚本, 所以心中纳闷了...
[ Last edited by pengfei on 2006-9-16 at 08:10 ]
|
|
2006-9-15 09:16 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
4 楼』:
可能二楼的例子不是真正意以上的批处理
我感觉,所谓的批处理应该大体上分为两种:
狭义的:(真正意义上的)
只含批处理的关键字(如: set,for,in ,if, exist ,goto 等等)和 DOS内部命令组成的脚本
广义的:(二楼说的应该属于此类)
把独立的程序名写进脚本中
|
|
2006-9-15 09:33 |
|
|
htysm
高级用户
积分 866
发帖 415
注册 2005-12-4
状态 离线
|
|
2006-9-15 22:52 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
6 楼』:
bat和exe一样不需要解释系统自动执行。调用bat可以用 cmd /c bat路径
|
C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2006-9-16 03:10 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
7 楼』:
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 ]
|
|
2006-9-16 08:19 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
8 楼』:
看看这个:
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的特殊性
|
C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2006-9-16 08:43 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
9 楼』:
是不是批处理中没有任何命令, 所以command没有执行成功, 提示出错啦...
这就更加证实, 操作系统通过解释BAT中命令, 再调用DOS平台下的EXE程序来执行的!
[ Last edited by pengfei on 2006-9-16 at 08:54 ]
|
|
2006-9-16 08:50 |
|
|
kcdsw
中级用户
积分 404
发帖 179
注册 2006-3-30
状态 离线
|
『第
10 楼』:
Quote: | 我个人认为批处理是一个更接近脚本的可执行文件. 它还是要依赖各种内部和外部命令来完成.
而不是像exe那样, 不依赖其他程序能自己单独完成柠... |
|
不也是将参数传递给exe 或者com程序
|
|
2006-9-17 03:07 |
|