中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 23:45
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样在BAT中实现提取一段字符串 查看 4,801 回复 16
楼 主 怎样在BAT中实现提取一段字符串 发表于 2004-01-23 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
UID 228
性别 男
状态 离线
问题:已知WIN98安装文件在D盘,但不知在哪个目录里,我想得到其SETUP.EXE文件,(要求精确定位,非WIN98软件的SETUP.EXE不要),最后得到其完整路径,如: D:\PWIN98\WIN98\SETUP.EXE,运行之.怎么实现????

分析:首先搜索与WIN98安装文件所在目录同一目录,且有WIN98唯一特性的文件,如Win98_30.cab (方法是 DIR D:Win98_30.cab /S /B>1.TXT ) 1.TXT的内容应该是:
D:\PWIN98\WIN98\Win98_30.cab,替换Win98_30.cab为SETUP.EXE

难点:就是最后一步 如何"替换Win98_30.cab为SETUP.EXE" ???
我想到了QB的提取一段字符串的函数,只要把Win98_30.cab左边的全部字符提取出来,再与SETUP.EXE合并就成功了,问题是我不想用QB而用批处理怎么实现???


我是 DOS之家站长 以上程序将用于即将发布的 新版的 "超级急救盘"
请大家帮助.谢谢各位
DOS之家 http://doshome.com 站长 葛明阳
2 发表于 2004-01-23 00:00 ·  加拿大 安大略省 多伦多
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
UID 9
状态 离线
这个不算太难,上次我编的那个查找WIN的批处理文件中就有一部分是专门实现该功能的。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

3 发表于 2004-01-23 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
UID 228
性别 男
状态 离线
是哪个啊?下载地址?具体文件名??
DOS之家 http://doshome.com 站长 葛明阳
4 发表于 2004-01-23 00:00 ·  中国 广西 柳州 电信
高级用户
★★★
积分 915
发帖 309
注册 2002-12-22 00:00
UID 567
性别 男
状态 离线
"超级" 2字现在被到处滥用。
5 发表于 2004-01-23 00:00 ·  加拿大 安大略省 多伦多
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
UID 9
状态 离线
呵呵。。对了,GMY,您能不能解释一下这个“超级”的意义所在,谢谢!
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

6 发表于 2004-01-25 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
UID 228
性别 男
状态 离线
"问题"自己解决,"超级"不是关键,"急救"是关键,说句不客气的话,本站的通用盘太花绍,没体现出DOS在急救中的作用,功能看似很多,关键时候还是派不上用场. 这两天我将发布2004新版的超级急救盘,等出来以后就明白了.
DOS之家 http://doshome.com 站长 葛明阳
7 发表于 2004-01-25 00:00 ·  中国 广西 柳州 电信
高级用户
★★★
积分 915
发帖 309
注册 2002-12-22 00:00
UID 567
性别 男
状态 离线
DOS的作用是急救??
8 发表于 2004-01-25 00:00 ·  中国 广西 柳州 电信
高级用户
★★★
积分 915
发帖 309
注册 2002-12-22 00:00
UID 567
性别 男
状态 离线
人家Wengier是在国外,他的通用盘是要做到全球通用,明白?
9 发表于 2004-01-25 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
UID 228
性别 男
状态 离线
谢谢LK提醒,我现在想通了,1.44只能做到轻轻点水,今后专心做光盘版的,不怕没有空间,功能全全全!!!今天的任务是做 最后一软盘版本 "超级急救盘 中文简繁双语版"


DOS之家 http://doshome.com 站长 葛明阳
10 发表于 2004-01-25 00:00 ·  中国 北京 联通
高级用户
★★★
积分 915
发帖 309
注册 2002-12-22 00:00
UID 567
性别 男
状态 离线
哦,挺虚心的,我倒有些不好意思了!

顺便问一下:你的论坛和会弹出3721插件的安装么?(3721我已经屏蔽,故有此一问)
11 发表于 2004-01-25 00:00 ·  加拿大 安大略省 多伦多
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
UID 9
状态 离线
急救是DOS的一个重要能力,没错。但DOS的功能很广很多,而那个“急救盘”在这方面完全体现不出来,好像DOS只有“急救”(急救什么?不是急救Windows么?)的功能似的。您的网站既然是“DOS之家”,而不是“Windows急救之家”,最好能比较全面的体现DOS的能力,以名符其实,而不是仅将功能限于某一方面。当然以上仅是一些个人建议罢了。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

12 发表于 2004-01-26 00:00 ·  中国 山西 太原 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re gmy:

你的任务实际上不是提取,而是替换。对此类问题,早期的DOS研究者有一类通用的办法,那就是edlin。它作为DOS下的流式文本编辑器,支持管道操作,对于文本的处理最为拿手。只是不知为何MS将它舍弃了。对于你的这个CASE可以考虑使用DEBUG,我的方案尚不成熟,过两天再回复吧。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
13 发表于 2004-01-26 00:00 ·  中国 河北 沧州 黄骅市 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
UID 228
性别 男
状态 离线
谢谢答复,已经解决替换问题了,用的是HEXC ,起步下载的,只有5K,支持ASCII和16进制
使用格式 hexc file.txt file.txt "123" "456" /u
意思就是在file.txt中替换123为456,是不是很简单?
DOS之家 http://doshome.com 站长 葛明阳
14 发表于 2004-01-26 00:00 ·  中国 河北 沧州 黄骅市 联通
版主
★★★
操作系统爱好者
积分 1,113
发帖 392
注册 2002-11-11 00:00
UID 228
性别 男
状态 离线
我也不知道,因为我已经安装了3721,我想应该会弹出吧.
DOS之家 http://doshome.com 站长 葛明阳
15 发表于 2004-01-27 00:00 ·  中国 山西 太原 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re gmy:

我以前一直考虑你在启动盘上运行批处理,所以首先排除了需要外部程序才能解决的方案。hexc应该是undisk附带的那个字符串替换工具吧,参数使用简单,大小也轻便。只是我觉得,为了启动一个setup.bat如此大费周章未免不值。本来debug的方案都已想了两个,看你似乎志不在此,索性给你提供另一个思路吧,不用替换字符串。

dir d:setup.exe /s/b | find "WIN98" > setup98.bat
call setup98.bat

岂不省事?


※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
论坛跳转: