中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 07:59
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]纯DOS下的一个批处理,复杂。。请高手帮忙看看
可打印版本  1,045 / 7
第1楼 xiaofking 发表于 2007-06-22 14:18
初级用户 发帖 31 积分 72
[求助]纯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


不知道我写得够不够清楚,有不清楚的麻烦大家跟贴,我是确实搞不懂为什么这段批处理会出现这么多错误了
第2楼 zasxcdfv 发表于 2007-06-22 14:35
初级用户 发帖 75 积分 152
我是新手、。、很多地方我不清楚楼主这么写会不会出问题,因此也不敢肯定的判断什么。不过作为我个人习惯,findstr后面我习惯用errorlevel if else判断结果。一大堆的&&||很容易不小心就弄出错误来。
有一些基本的错误比如多写了个符号之类的,楼主应该可以检查出来。
最后那段if if if应该加上括号把?
第3楼 lxmxn 发表于 2007-06-22 16:22
版主 发帖 4,938 积分 11,386
楼主需要注意,纯DOS下的批处理和xp下的有很多的不同,很多xp下能用的,DOS下就不能用了。
第4楼 bob1989 发表于 2007-06-22 19:26
中级用户 发帖 144 积分 322
findstr.exe在纯DOS下能用吗``?
第5楼 xiaofking 发表于 2007-06-22 22:07
初级用户 发帖 31 积分 72
难道findstr在纯DOS下还不能用???
第6楼 xiaofking 发表于 2007-07-07 23:09
初级用户 发帖 31 积分 72
旧贴新顶啊,还没解决
第7楼 lxmxn 发表于 2007-07-08 06:38
版主 发帖 4,938 积分 11,386
不是findstr能不能用的問題,是批處理的語法格式在純DOS下無法識別。

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

[ Last edited by lxmxn on 2007-7-8 at 06:39 AM ]
第8楼 huzixuan 发表于 2007-07-08 07:11
高级用户 发帖 219 积分 537 来自 芜湖
findstr 在DOS下就用不起来
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023