中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]批处理单步执行器(批处理版)
作者:
标题: [原创]批处理单步执行器(批处理版) 上一主题 | 下一主题
movy
初级用户





积分 61
发帖 33
注册 2007-1-13
状态 离线
『楼 主』:  [原创]批处理单步执行器(批处理版)

标题:[原创]批处理单步执行器(批处理版) 作者:movy [at] www.cn-dos.net 时间:2009-12-25 已知不足: 1、由于本程序默认每行为一个单步中断点,故暂不能正确处理多行的for或 if语句(否则出现语句不完整导致的语法错误),但支持单行的if、for。 2、由于DOS执行批处理时的变量为全局,故不可单步调试 程序自身和与本 程序使用相同变量、编号的批程序。 注:(DOS重入在中断的堆栈级别本身存在制约,大家谅解) 改进:1、V1.1+:试图支持被调试程序的命令行参数。 2、V1.1:变量和标号各少用1个,并改名为非常用名称。 说明:1、转帖请注明原帖出处属于中国DOS联盟(www.cn-dos.net/forum);    2、欢迎大家广泛测试并补充改进或建议;    3、有任何错误还请不吝指出; 正文开始: ______________________________________________________________________________   DOS或XP的批处理程序因为没有单步执行功能,定位批处理程序的错误、或检验批 处理程序的流程和逻辑功能是否满足设计意图变得十分困难。本人在netbenton大侠的 “批处理版:批处理自动调试器”www.cn-dos.net/forum/viewthrea ... 的启发下,编制了如下可在命令行单步执行批处理程序的批处理, 经过测试,在Windows XP下运行正常! ---------------------------------------------------------------------------- @echo off&setlocal enabledelayedexpansion if "%1"=="" echo Usage:%0 BAT_File && goto :eof for %%Z in (bat cmd .) do if exist %1.%%Z (set $#y=%1.%%Z &&goto :d0y) else (echo not found:%1.%%Z!) set $#y= goto :eof :d0y shift for /f "usebackq tokens=* delims=" %%Z in (%$#y%) do (echo.&echo %%Z &pause&cmd /V:ON /C %%Z) set $#y= ----------------------------------------------------------------------------   假定程序分别存为“step.bat”、“BAT_File”,运行方法:   在DOS命令行输入: step BAT_File,程序自动搜索BAT_File.bat,BAT_File.cmd和BAT_File,找到就按行单步执行:先显示待执行的命令行,然后等用户按任意键开始执行,(显示结果,)直至被调用的批文件结束而终止退出。   测试使用了nforce1在“ [原创]变量延迟详解(新手推荐)”www.cn-dos.net/forum/viewthrea ... 的例3,但稍作改动: ---------------------------------------------------------------------------- @echo off&setlocal EnableDelayedExpansion set mm=girl&echo ^!mm^! pause ----------------------------------------------------------------------------   和原例3的区别是第二行结尾改为 ^!mm^! ,以防止系统预处理时把变量mm替换为 空串。 大家可以试试 原例三结尾为 !mm!的效果。 为增加程序的健壮性,大家可自行把step.BAT中的变量(如%%z),标号(:d0y) 等替换为自己极不常用到的名称。暂此,请大家测试、反馈或修正,谢谢! ____________________________________________________________________________    [ Last edited by movy on 2009-12-26 at 16:46 ]


附件 1: stepV1.1.rar (2009-12-26 16:36, 324 bytes,下载次数: 46)
2009-12-26 05:27
查看资料  发短消息  网志   编辑帖子  回复  引用回复
movy
初级用户





积分 61
发帖 33
注册 2007-1-13
状态 离线
『第 2 楼』:  

谢谢大家关注,测试和建言! [ Last edited by movy on 2009-12-26 at 16:49 ]


2009-12-26 05:38
查看资料  发短消息  网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2343
发帖 636
注册 2004-3-6
状态 离线
『第 3 楼』:  

程序调试一下自身试试: step step.bat 另外,程序不支持命令行参数 否则可以试试 step step.bat step.bat


2009-12-26 11:35
查看资料  发短消息  网志   编辑帖子  回复  引用回复
movy
初级用户





积分 61
发帖 33
注册 2007-1-13
状态 离线
『第 4 楼』:  

本程序功能是否正常通过运行和本程序没有共同变量、标号的批处理程序来验证。 程序step.bat 调试自身存在变量、编号复用冲突,故不会有正确结果的。 谢谢qzwqzw提示,帮助明确本程序的使用范围。


2009-12-26 16:05
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: