中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]纯DOS下的一个批处理,复杂。。请高手帮忙看看
作者:
标题: [求助]纯DOS下的一个批处理,复杂。。请高手帮忙看看 上一主题 | 下一主题
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『楼 主』:  [求助]纯DOS下的一个批处理,复杂。。请高手帮忙看看

前提:find.exe   findstr.exe   gdisk.exe   ghost.exe   abc.bat在同一目录下,以下为abc.bat内容

Gdisk 1 >c:\ggg.txt
if not exist c:\ggg.txt echo error1&goto end
findstr /i "FAT32 NTFS" c:\ggg.txt>nul&&set flag1=1||echo error2&goto end
findstr /i "DIAGNOSTIC UNKNOWN" c:\ggg.txt>nul&&set flag2=1||(
    find /i "AAAA" c:\ggg.txt>nul&&(Ghost /a)||(
        echo error3”&goto end
    )
)
find /i "BBBB" c:\ggg.txt>nul&&set flag3=1
if defined flag1 if defined flag2 if defined flag3 Ghost /b

:end
pause

Gdisk的功能是生成一个分区表,这段批处理是从生成的ggg.txt里判断分区类型并执行不同的ghsot

问题1:纯dos下for没有开关,是否能用第三方软件如strings来解决生成ggg.txt的问题,也就是说将上面的批处理修改成不要在C盘生成ggg.txt就能达到与上面同样的效果(纯dos是否一定要生成临时文件?)


问题2:abc.bat批处理在纯dos下执行后出现很多错误(echo没有关)

F:\>abc.bat
F:\>gdisk.exe 1 >C:\ggg.txt
F:\>if not exist c:\ggg.txt echo error1&goto end
F:\>findstr /i "FAT32 NTFS" c:\ggg.txt>nul&&set flag1=1||echo error&goto end
Syntax error
F:\>findstr /i "DIAGNOSTIC UNKNOWN" c:\ggg.txt>nul&&set flag2=1||(
Syntax error
F:\>    find /i "AAAA" c:\ggg.txt>nul&&(Ghost /a)||(
Syntax error
F:\>        echo error3”&goto end
error3”&goto end
F:\>    )
Bad command or file name
F:\>)
Bad command or file name
F:\>find /i "BBBB" c:\ggg.txt>nul&&set flag3=1
File creation error
F:\>if defined flag1 if defined flag2 if defined flag3 Ghost /b
Syntax error


不知道我写得够不够清楚,有不清楚的麻烦大家跟贴,我是确实搞不懂为什么这段批处理会出现这么多错误了

2007-6-22 14:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zasxcdfv
初级用户





积分 152
发帖 75
注册 2007-2-6
状态 离线
『第 2 楼』:  

我是新手、。、很多地方我不清楚楼主这么写会不会出问题,因此也不敢肯定的判断什么。不过作为我个人习惯,findstr后面我习惯用errorlevel if else判断结果。一大堆的&&||很容易不小心就弄出错误来。
有一些基本的错误比如多写了个符号之类的,楼主应该可以检查出来。
最后那段if if if应该加上括号把?

2007-6-22 14:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

楼主需要注意,纯DOS下的批处理和xp下的有很多的不同,很多xp下能用的,DOS下就不能用了。

2007-6-22 16:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bob1989
中级用户





积分 322
发帖 144
注册 2007-1-10
状态 离线
『第 4 楼』:  

findstr.exe在纯DOS下能用吗``?

2007-6-22 19:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 5 楼』:  

难道findstr在纯DOS下还不能用???

2007-6-22 22:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 6 楼』:  

旧贴新顶啊,还没解决

2007-7-7 23:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  

不是findstr能不能用的問題,是批處理的語法格式在純DOS下無法識別。

比如你的括號分行寫,在DOS下就不成。

[ Last edited by lxmxn on 2007-7-8 at 06:39 AM ]

2007-7-8 06:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 8 楼』:  

findstr 在DOS下就用不起来



江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-7-8 07:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: