标题: [求助]纯DOS下的一个批处理,复杂。。请高手帮忙看看
[打印本页]
作者: xiaofking
时间: 2007-6-22 14:18
标题: [求助]纯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
不知道我写得够不够清楚,有不清楚的麻烦大家跟贴,我是确实搞不懂为什么这段批处理会出现这么多错误了
作者: zasxcdfv
时间: 2007-6-22 14:35
我是新手、。、很多地方我不清楚楼主这么写会不会出问题,因此也不敢肯定的判断什么。不过作为我个人习惯,findstr后面我习惯用errorlevel if else判断结果。一大堆的&&||很容易不小心就弄出错误来。
有一些基本的错误比如多写了个符号之类的,楼主应该可以检查出来。
最后那段if if if应该加上括号把?
作者: lxmxn
时间: 2007-6-22 16:22
楼主需要注意,纯DOS下的批处理和xp下的有很多的不同,很多xp下能用的,DOS下就不能用了。
作者: bob1989
时间: 2007-6-22 19:26
findstr.exe在纯DOS下能用吗``?
作者: xiaofking
时间: 2007-6-22 22:07
难道findstr在纯DOS下还不能用???
作者: xiaofking
时间: 2007-7-7 23:09
旧贴新顶啊,还没解决
作者: lxmxn
时间: 2007-7-8 06:38
不是findstr能不能用的問題,是批處理的語法格式在純DOS下無法識別。
比如你的括號分行寫,在DOS下就不成。
[
Last edited by lxmxn on 2007-7-8 at 06:39 AM ]
作者: huzixuan
时间: 2007-7-8 07:11
findstr 在DOS下就用不起来