中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-01 20:19
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 請教 DOS 下FIND的問題 查看 2,321 回复 10
楼 主 請教 DOS 下FIND的問題 发表于 2006-09-29 22:32 ·  中国 广东 深圳 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
我想將1.txt的內容變成2.TXT,但我DOS下輸入 type 1.txt |find /I “DID” “Revision” “Subsystem DID” >2.txt
結果2.txt里只個DID : 0x01d1,搞不明白怎麼回事,請高手們指點指點。謝謝!

---------------1.txt----------------
PCI Bus Dev Fun: 0x01, 0x00, 0x00
DID : 0x01d1
Device Id : G72
Device Name : GeForce 7300 LE
Revision : a3
Subsystem VID : 0x10de
Subsystem DID : 0x0000



-------2.txt--------
DID : 0x01d1
Revision : a3
Subsystem DID : 0x0000
2 发表于 2006-09-29 23:24 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
find 好像一次找不了多个串。
3 发表于 2006-09-30 00:28 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
请楼主测试以下代码, 速度很不错, 并且实现了排版, 使文本看起来更加工整.


@echo off
for /f "tokens=1*" %%i in (1.txt) do (
if "%%i"=="DID" echo %%i %%j>>2.txt
if "%%i"=="Revision" echo %%i %%j>>2.txt
if "%%i"=="Revision" echo %%i %%j>>2.txt
)
pause

4 发表于 2006-09-30 02:27 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
我感觉楼主可能是想在纯 DOS 下用,如果是在CMD下,倒可以直接用 findstr 一次找多个串。纯 DOS 的话 FOR 的 /F 也没有了。
5 发表于 2006-09-30 02:46 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
想了会儿,这办法有点笨,不过应该能在纯 DOS 下用。


find "DID :" 1.txt | find ":">2.txt
find "Revision :" 1.txt | find ":">>2.txt
find "Subsystem DID :" 1.txt | find ":">>2.txt
6 发表于 2006-09-30 07:19 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
Originally posted by quan_zhou at 2006-9-29 22:32:
我想將1.txt的內容變成2.TXT,但我DOS下輸入 type 1.txt |find /I “DID” “Revision” “Subsystem DID” >2.txt
結果2.txt里只個DID : 0x01d1,搞不明白怎麼堮..


就像二楼说的find不能查找多个字符串. 所以2.txt中也只显示查找第一个字符的行. 而NaturalJ0说的纯DOS下不能和for的/f参数我就不清楚了.

要想一次查找多个字符串, 建议楼主使用findstr.
@echo off
findstr /i /c:"DID :" /c:"Revision" /c:"Subsystem DID" 1.txt>>2.txt
pause
7 谢谢大家的回复! 发表于 2006-10-03 23:44 ·  中国 广东 茂名 高州市 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
谢谢大家的关注,这几天回家了没能及时上网。
如5楼 NaturalJ0兄的方法一定是可以的,但我想一次完成多个查找,因为这样来得比较快。
另:pengfei 兄提到的findstr是否有在DOS能运行的,若有请帮忙发一个给我,谢谢!
8 发表于 2006-10-04 01:20 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by NaturalJ0 at 2006-9-30 02:46:
想了会儿,这办法有点笨,不过应该能在纯 DOS 下用。


find "DID :" 1.txt | find ":">2.txt
find "Revision :" 1.txt | f ...

  没必要用管道符号来再次 find 吧?因为只要在某行找到关键字,就会把这行的内容全部显示出来的,再次查找是否存在冒号就属于重复查找了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
9 发表于 2006-10-06 02:01 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
10 发表于 2007-11-17 10:01 ·  中国 辽宁 阜新 中移铁通
新手上路
积分 2
发帖 1
注册 2006-09-12 02:41
19年会员
UID 62370
状态 离线
Originally posted by namejm at 2006-10-4 01:20:

  没必要用管道符号来再次 find 吧?因为只要在某行找到关键字,就会把这行的内容全部显示出来的,再次查找是否存在冒号就属于重复查找了。

我用这个命令为什么老是提示软驱没准备.为什么?
11 发表于 2007-11-22 18:02 ·  中国 四川 南充 营山县 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
论坛跳转: