[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
以前的分析
CMD是逐行读取bat内容,并根据偏移量开始下一次的读取。
比如以下内容:
@echo off
pause
pause
第一次暂停时,已经读取过的内容是@echo off\r\npause\r\n,偏移量是18个字节,cmd接下来会从第19个字节开始读取,即下一行的pause。此时如果在第一个pause后面加上“  dir”(2个空格+dir),则从19个字节开始的内容变成了dir\r\n,碰到回车换行,于是执行dir命令。再接着才会执行后面的pause。

上面是在脚本运行过程中改变脚本文件的内容。

[ 本帖最后由 zqz0012005 于 2009-10-7 09:25 编辑 ]
1

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 5楼 的帖子

应该是从硬盘上的文件读取到内存(文本放入物理内存一般都够吧)
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

不错。
这个既是bat的缺点,也是它的优点,可以在执行过程中改变自身,并动态执行(重载?呵呵),比较灵活。而且有些用法很适合把bat自身作为临时文件/数据文件,运行时根据改变的内容决定执行步骤。

相比其他脚本和大多数命令而言,bat是比较另类的。for 也是全部读取文件到内存再处理。我还没注意到其他哪个程序处理文件是分部分逐次读取的。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

还有管道耗时,&&、|| 与 if errorlevel 的效率比较。
重定向到文件,这个也许可以归结到文件写操作类命令。
读、写碰盘文件的命令可能普通耗时较多,尤其是写。

讨论命令机制的效率的一篇文:批处理中for /f 解析命令输出的效率
http://www.bathome.net/viewthread.php?tid=3591

运行外部命令,可能还有从path环境变量中找到命令程序的耗时。
直接运行一般文件而由系统自己运行关联程序来打开它,可能还要先搜索注册表的耗时。
类似的,运行外部命令时可能还要读取组策略、注册表等系统数据库的所有相关的配置,如映象劫持之类的。
这些算是命令的启动时间吧。
至于一个具体命令,可能还要到哪里读什么文件、信息之类的,再加上正式执行过程,最后可能又要更新什么文件(三方?),加起来算是命令的运行时间。
命令运行的总时间应该要包括这两个时间。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表