中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 07:19
48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]半年多都没解决的纯DOS批处理问题
可打印版本  2,543 / 31
第1楼 xiaofking 发表于 2008-01-11 14:51
初级用户 发帖 31 积分 72
[已解决]半年多都没解决的纯DOS批处理问题
已经求助过很多批处理的高手,但纯DOS下真的太难实现,findstr用不了,大家帮帮忙吧,是否借助第三方工具能实现,简单介绍如下:

纯DOS下,运行某DOS程序Gdisk,屏幕输出文本内容如下

AAA BBB CCC //第一行
xxx yyy zzz //第二行

以上字母皆为替代,只是大概输出如此(输出的这些字符串全部显示在纯DOS画面中,没有生成文本文件)

现在要求判断Gdisk的以上输出,如果第二行中有出现字符串“A01”或"A02",就执行语句go1,如果没有就重启

大概就是这样了,大家提些思路好吗,是否要用到类似input,askenv,aset,xset,strings,wbat,be这些第三方工具?能否给出批处理的大概写法

[ Last edited by xiaofking on 2008-1-14 at 01:20 PM ]
第2楼 不得不爱 发表于 2008-01-11 14:53
超级版主 发帖 2,044 积分 5,310 来自 四川南充
用NSET就可以解决这个问题!
第3楼 xiaofking 发表于 2008-01-11 15:02
初级用户 发帖 31 积分 72
版主。。。能不能根据我的流程写几句看看
第4楼 xiaofking 发表于 2008-01-11 15:05
初级用户 发帖 31 积分 72
或者给我一个nset的使用方法行不行,我在网上只能找到这么一句
Nset.com 从输出中取得变量以设置,FINDCD -a|NSET CDROM=$1
第5楼 qzwqzw 发表于 2008-01-11 19:30
银牌会员 发帖 636 积分 2,343
只用dos自带的find就可以了

如果只是忽略大小写查找A01,那么
gdisk| find "A01" /i>nul
if errorlevel 1 goto end
:go1
::其它语句
:end

如果指定在第二行忽略大小写查找A01,那么
gdisk | find "" /v/n | find "[2]" | find "A01" /i>nul
if errorlevel 1 goto end
:go1
::其它语句
:end
第6楼 xiaofking 发表于 2008-01-11 21:38
初级用户 发帖 31 积分 72
find 在纯DOS无法使用....
第7楼 xiaofking 发表于 2008-01-11 21:39
初级用户 发帖 31 积分 72
纯DOS也无法指定在第几行查找的
第8楼 xiaofking 发表于 2008-01-11 21:51
初级用户 发帖 31 积分 72
find可以用...但你上面的方法是不行的
第9楼 zh159 发表于 2008-01-11 21:59
金牌会员 发帖 1,467 积分 3,687
纯DOS下find是外部命令,所以你得找一个DOS下的find
第10楼 xiaofking 发表于 2008-01-12 00:35
初级用户 发帖 31 积分 72
试过了,无论是运行nset还是find,在纯DOS下都会出现
“未准备写驱动器A”A:放弃,R:重试,F:失败?

证明nset和find都是需要写入缓存的命令。。。没作用啊。。。
第11楼 fastslz 发表于 2008-01-12 00:40
铂金会员 发帖 2,315 积分 5,493 来自 上海
Originally posted by xiaofking at 2008-1-12 00:35:
试过了,无论是运行nset还是find,在纯DOS下都会出现
“未准备写驱动器A”A:放弃,R:重试,F:失败?

证明nset和find都是需要写入缓存的命令。。。没作用啊。。。


这里有找答案
http://www.cn-dos.net/forum/viewthread.php?tid=36718&fpage=1&highlight=
第12楼 xiaofking 发表于 2008-01-12 00:55
初级用户 发帖 31 积分 72
仔细看过了,问题是我没办法生成一个txt文件,而且 | 这个符号在纯DOS也无法使用,Gdisk -a 后直接输出在画面上的
第13楼 xiaofking 发表于 2008-01-12 01:44
初级用户 发帖 31 积分 72
找了N多个工具,其实问题就是在于如何不用输出txt文件也可以实现这个功能,如果要输出txt文件的话就简单了
第14楼 fastslz 发表于 2008-01-12 01:45
铂金会员 发帖 2,315 积分 5,493 来自 上海
“未准备写驱动器A”A:放弃,R:重试,F:失败?
11楼看到了吗
Originally posted by fastslz at 2008-1-4 12:10:
我猜测分析下是什么原因吧
F应该是你的光盘盘符,你启动的DOS下没有find.com外部命令,而Path变量里有%CDROM%或F:\.....,这个时候DOS就尝试读取光盘下目 ...


我猜测分析下是什么原因吧
猜测1: 你的电脑应该有软驱的,你启动的DOS下没有find.com外部命令,而Path变量里有A:\,这个时候DOS就尝试读取A:\目录下寻找find.com,所以出现一般性错误读驱动器A:\。

猜测2: 你的电脑应该有软驱的,你启动的DOS下没有find.com外部命令,你就拷贝了xp下的find.exe在纯DOS用,xp的find是32位子程序在纯dos下用需要32位支持文件CWSDPMI,而Path变量里有A:\,这个时候DOS就尝试读取A:\目录下寻找CWSDPMI.exe,所以出现一般性错误读驱动器A:\。

无法生成一个txt文件,不是因为 | 符号在纯DOS也无法使用,在猜测2里已经说明了,是因为find 命令没执行成功,没执行成功当然不会生成txt文件
第15楼 terse 发表于 2008-01-12 01:57
银牌会员 发帖 946 积分 2,404
lmod 应该可以指定行的 你gdisk先输出不就可以了 是不是一定要输出在画面上呢
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023