中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-02 05:54
48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行
DOS批处理 & 脚本技术(批处理室) » [疑难]自己写的脚本,隐含有错误,但检查不出,请大家帮忙
可打印版本  929 / 10
第1楼 yardian 发表于 2006-10-20 06:15
中级用户 发帖 85 积分 305
[疑难]自己写的脚本,隐含有错误,但检查不出,请大家帮忙
经过两天的时间,在论坛里发贴求教,终于写出了一个基本满足自己需求的脚本.可是但偶尔还是会中途自动退出.特上来请大家帮忙检查一下:




[ Last edited by yardian on 2006-10-20 at 09:28 ]
第2楼 yardian 发表于 2006-10-20 06:16
中级用户 发帖 85 积分 305
说明一下:其中有几处没实现的地方用注释指出了
另外:
if not exist %ciscoios% goto reinput
这句的作用是想验证当手动输入的时候,其是否存在,但当ciscoios为空的时候,会提示:'reinput' 不是内部或外部命令,也不是可运行的程序或批处理文件。
不知如何解决.

[ Last edited by yardian on 2006-10-20 at 15:24 ]
第3楼 lxmxn 发表于 2006-10-20 06:22
版主 发帖 4,938 积分 11,386

  我想楼主最好把这个批处理的作用和实现思路和大伙说一下比较好……
第4楼 namejm 发表于 2006-10-20 06:33
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  请把 idlepc.txt 等文件的内容贴一部分出来,以便于查错。感觉这段代码还可大为精简。
第5楼 electronixtar 发表于 2006-10-20 06:56
铂金会员 发帖 2,672 积分 7,493
好东东,快全部发上来啊
第6楼 yardian 发表于 2006-10-20 09:13
中级用户 发帖 85 积分 305
Originally posted by electronixtar at 2006-10-20 06:56 AM:
好东东,快全部发上来啊

楼上的知道我写这个做什么?


idlepc.txt的内容都是形如:c7200-ik9o3s-mz.123-17a.bin ======>>> 0x60729c0c 的
我的需求是:运行程序,
1.选择需要模拟的对象(通过,1.2.3.4.5.q选择)
1.1.检测当前目录下有没有IOS(格式为:xxxx.bin有则显示并赋值给iosname,没有显示空)
1.2.检测idlepc.txt有没有匹配的内容(如果有则显示该值并赋值给idlepc.没有显示空)
1.3.检测idelpc.txt的内容是否标准,并删除不标准的部分.
2.要求输入ios,并显示,改写iosname的值.需要检测ios是否符合xxx.bin,不符合重新输入,同时如果为空,要求重新输入
3,要求输入idlepc值,并显示.同时改写idlepc值.需要检测是否以0x开头,而且一共只有10位
4.将输入的iosname和idlepc值以iosname======>>>>idlepc的形式写入idlepc.txt
5.选择r1,r2,r3,r4.....符合选项继续,不符合,提示重新输入,还是返回开始菜单.
6,如果5成立.调用外部bat
7.由于外部bat,变化较大.暂时还没想到用什么方法尽可能使用变量,以增加灵活性.所以就没什么问题了

[ Last edited by yardian on 2006-10-20 at 09:34 ]
第7楼 yardian 发表于 2006-10-20 22:05
中级用户 发帖 85 积分 305
晕,没人帮忙了?自己小顶一下
第8楼 zerocq 发表于 2006-10-21 01:52
中级用户 发帖 196 积分 458
测了一下下代码,好像代码是没写错

但楼主要注意一下代码分段可能效果好点

你说的那一段我运行也会出现你说的那种错误
================================================================================
echo 如果IOS检测正确请直接回车确认,否则
:reinput
set /p ciscoios=请直接将%name% IOS拖到本窗口:
echo ==============================================================================
if {%ciscoios%}=={} (
if {%ios%}=={} goto reinput
)
if not exist %ciscoios% goto reinput
rem 需要加入对%ciscoios%的验证:以bin结尾.但不知道如何写


我把:reinput上边加几个空行
rem这句去掉就没有问题了咯
不知道是什么原因:P

分段容易阅读,P处理可能效果也好点^_^
第9楼 yardian 发表于 2006-10-21 03:09
中级用户 发帖 85 积分 305
嗯.是的.谢谢!去掉后是没问题了.
namejm版主呢?不是说可以精简吗?能不能帮忙精简一下?写这些代码已经费了很大劲.如果精简可是一点都不会的.麻烦你帮帮忙吧
第10楼 zerocq 发表于 2006-10-21 04:33
中级用户 发帖 196 积分 458
直接看代码精简应该不容易哇

把用到的文本文件内容,各bin文件名列一些出来才方便精简咯

这里有一个地方可以
if {%cisco%}=={} goto begin
if /i %cisco%==1 goto getfilename
if /i %cisco%==2 goto getfilename
if /i %cisco%==3 goto getfilename
if /i %cisco%==4 goto getfilename
if /i %cisco%==5 goto getfilename
if /i %cisco%==q goto quit




直接改成
if {%cisco%}=={} goto begin
if /i %cisco%==1 set name =3620
if /i %cisco%==2 set name =3640
if /i %cisco%==3 set name =3660
if /i %cisco%==4 set name =7200
if /i %cisco%==5 set name =3840
if /i %cisco%==q goto quit

取消getfilename这一步:D
第11楼 yardian 发表于 2006-10-21 04:57
中级用户 发帖 85 积分 305
谢谢,这一步真的是多余的

[ Last edited by yardian on 2006-10-21 at 05:06 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023