楼 主
[已解决]半年多都没解决的纯DOS批处理问题
发表于 2008-01-11 14:51 · 中国 广东 广州 天河区 电信
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
已经求助过很多批处理的高手,但纯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 · 中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
第 3 楼
发表于 2008-01-11 15:02 · 中国 广东 广州 天河区 电信
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
第 4 楼
发表于 2008-01-11 15:05 · 中国 广东 广州 天河区 电信
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
或者给我一个nset的使用方法行不行,我在网上只能找到这么一句
Nset.com 从输出中取得变量以设置,FINDCD -a|NSET CDROM=$1
第 5 楼
发表于 2008-01-11 19:30 · 中国 山西 运城 联通
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
UID 19350
性别 男
状态 离线
只用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 楼
发表于 2008-01-11 21:38 · 中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
第 7 楼
发表于 2008-01-11 21:39 · 中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
第 8 楼
发表于 2008-01-11 21:51 · 中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
第 9 楼
发表于 2008-01-11 21:59 · 中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
纯DOS下find是外部命令,所以你得找一个DOS下的find
第 10 楼
发表于 2008-01-12 00:35 · 中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
试过了,无论是运行nset还是find,在纯DOS下都会出现
“未准备写驱动器A”A:放弃,R:重试,F:失败?
证明nset和find都是需要写入缓存的命令。。。没作用啊。。。
第 11 楼
发表于 2008-01-12 00:40 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
第 12 楼
发表于 2008-01-12 00:55 · 中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
仔细看过了,问题是我没办法生成一个txt文件,而且 | 这个符号在纯DOS也无法使用,Gdisk -a 后直接输出在画面上的
第 13 楼
发表于 2008-01-12 01:44 · 中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
初级用户
★
积分 72
发帖 31
注册 2007-06-09 00:26
UID 90742
性别 男
状态 离线
找了N多个工具,其实问题就是在于如何不用输出txt文件也可以实现这个功能,如果要输出txt文件的话就简单了
第 14 楼
发表于 2008-01-12 01:45 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
“未准备写驱动器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 楼
发表于 2008-01-12 01:57 · 中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
lmod 应该可以指定行的 你gdisk先输出不就可以了 是不是一定要输出在画面上呢
简单!简单!再简单!
论坛跳转: