中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 18:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用脚本读取下面格式的文本文件?[已结,多谢各位。]
楼 主 如何用脚本读取下面格式的文本文件?[已结,多谢各位。] 发表于 2007-01-03 11:51 ·  中国 广西 南宁 联通
初级用户
积分 54
发帖 25
注册 2006-09-29 02:15
UID 63991
状态 离线
如何用脚本读取下面格式的文本文件,

并取出

FileName=
Path=

后面的字符串输出到 my.txt

-----------------------------------------------------------------------------------------


FileName=***...
Path=.../


FileName=***...
Path=***.../.../


FileName=***...
Path=***.../.../...

-------------------------------------------------------------------------------------------

[ Last edited by gyfhgyfh on 2007-1-10 at 07:29 AM ]
2 发表于 2007-01-03 21:02 ·  中国 辽宁 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
用VBS写的,把你要提取的文件命名为a.txt之后把下面的内容另存为ss.vbs,双击运行,注意要和a.txt文件在同一个目录下。


set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("a.txt",1)
do while file.AtEndOfStream <> True
n=file.readline
if left(n,9)="FileName=" then m=m&right(n,len(n)-9)&vbcrlf
if left(n,5)="Path=" then m=m&right(n,len(n)-5)&vbcrlf
loop
file.close
set file=fso.createtextfile("my.txt",true)
file.write m
file.close
msgbox "提取内容成功!请查看my.txt文件。",48+4096,"操作完成"
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
gyfhgyfh +2 2007-01-05 09:38
3 发表于 2007-01-03 21:22 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
for /f "tokens=2 delims==" %%i in (test.txt) do (>>my.txt echo %%i)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
gyfhgyfh +2 2007-01-05 09:39
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
4 发表于 2007-01-03 22:23 ·  中国 广西 南宁 联通
初级用户
积分 54
发帖 25
注册 2006-09-29 02:15
UID 63991
状态 离线
非常好,感谢两位。

来个更复杂的,即字符出现的位置不是固定的:


如何用脚本读取下面格式的文本文件,

并取出

FileName=
Path=

后面的字符串输出到 my.txt

-----------------------------------------------------------------------------------------


XXXXX...=***...
XXXX...=.../
XXX...=...
...




XXX...=...
FileName=***...
XXX...=...
Path=.../
...



...
FileName=***...
...



FileName=***...
...
Path=***.../.../...
...

-------------------------------------------------------------------------------------------

[ Last edited by gyfhgyfh on 2007-1-3 at 10:49 PM ]
5 发表于 2007-01-03 22:54 ·  中国 辽宁 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
用上面的代码一样可以完成。
6 发表于 2007-01-03 23:00 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
代码如下
for /f "tokens=1,2 delims==" %%i in (test.txt) do (
if "%%i"=="FileName" (>>my.txt echo. %%j)
if "%%i"=="Path" (>>my.txt echo. %%j)
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
gyfhgyfh +2 2007-01-05 09:40
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
7 发表于 2007-01-03 23:04 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
其实去掉echo后的.就够用了。^_^
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
8 发表于 2007-01-03 23:10 ·  中国 广西 南宁 联通
初级用户
积分 54
发帖 25
注册 2006-09-29 02:15
UID 63991
状态 离线
非常好,非常好。

现在让我们一起来继续深入,把提取到的内容按以下格式进行连接并输出:

(Path) + (FileName)
9 发表于 2007-01-03 23:13 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
说清楚些
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
10 发表于 2007-01-03 23:17 ·  中国 广西 南宁 联通
初级用户
积分 54
发帖 25
注册 2006-09-29 02:15
UID 63991
状态 离线
输出


XXX...=...
FileName=abc
XXX...=...
Path=c:\
...



里面的 (Path=.../ ) + (FileName=***...)

即:c:\abc

[ Last edited by gyfhgyfh on 2007-1-3 at 11:18 PM ]
11 发表于 2007-01-03 23:28 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
只有一段吗?
[XXXXXXXX...]
XXX...=...
FileName=***...
XXX...=...
Path=.../
...
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
12 发表于 2007-01-03 23:31 ·  中国 广西 南宁 联通
初级用户
积分 54
发帖 25
注册 2006-09-29 02:15
UID 63991
状态 离线
-----------------------------------------------------------------------------------------

[XXXXXXXX...]
XXXXX...=***...
XXXX...=.../
XXX...=...
...



[XXXXXXXX...]
XXX...=...
FileName=***...
XXX...=...
Path=.../
...


[XXXXXXXX...]
...
FileName=***...
...


[XXXXXXXX...]
FileName=***...
...
Path=***.../.../...
...

-------------------------------------------------------------------------------------------
字符位置不固定。
13 发表于 2007-01-03 23:37 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
UID 63486
来自 河北廊坊
状态 离线
FileName和Path数量不等要如何对应?请讲清楚。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
14 发表于 2007-01-03 23:45 ·  中国 广西 南宁 联通
初级用户
积分 54
发帖 25
注册 2006-09-29 02:15
UID 63991
状态 离线
先简单点吧,提取后的 my.txt 里面的内容格式已经是:

----------------------------------------------------------------
FileName=...
Path=...
FileName=...
Path=...
FileName=...
Path=...
...
----------------------------------------------------------------




如何将 my.txt 输出 Path=...FileName=... 即

----------------------------------------------------------------
c:\abc
...
----------------------------------------------------------------
15 发表于 2007-01-03 23:52 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  呵呵,这个简单,每两行合并为一行就是了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转: