中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何获取文本文件里一个文件名的前几个字符
作者:
标题: 如何获取文本文件里一个文件名的前几个字符 上一主题 | 下一主题
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『楼 主』:  如何获取文本文件里一个文件名的前几个字符

比如我有一个文本文件a.txt。
里面的内容其中有一行是:
2009-12-16  12:15               290 GGF324579-1-4.ddo

这行的位置不固定,能否通过遍历,找到GGF324579这几个字符,并把这几个字符打印到另一个文本文件里,在下面这行中引用出来:
echo mp3 name: GGF324579

2009-12-16 19:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

查找字符串,需要该字符串或其所在行具有排他性的特征。
你没有提供这个特征,是不能查找的。
例如:
1,该字符串字首为GG,而其他字符没有这个特征。
2,该字符串行尾为.ddo,而其他行没有。
3,该字符串所在行的行首为此文件的创建时间等。

[ Last edited by Hanyeguxing on 2009-12-16 at 21:13 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-16 21:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 3 楼』:  

该行结尾为.ddo
找到这个后缀名,然后可以找到这个文件名的前面几个字符,只要“-1”前的所有字符即可。大侠赐教。

2009-12-16 21:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 4 楼』:  

.ddo是排他性的后缀名!

2009-12-16 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  


for /f "tokens=6 delims=- " %%i in ('findstr /i "\.ddo\>" a.txt') do echo mp3 name: %%i
这个时候获取的%%i就是你要的。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-16 22:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 6 楼』:  

谢谢楼上的解答,%%i确实就是我想要的那串字符,但是还有最后一步,就是我想把%%i代表的这串字符输出到另一个文本文件b.txt里,达到这样的效果:
mp3 name: GGF324579.mp3

我事先写了一个批处理用于产生b.txt,
echo mp3 name: %%i.mp3  >>b.txt

但是现在这个%%i能否像这样引用呢?
谢谢!

2009-12-17 09:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  


for /f "tokens=6 delims=- " %%i in ('findstr /i "\.ddo\>" a.txt') do echo mp3 name: %%i.mp3>>b.txt
%%i只能在for内部直接使用。就是这样用的嘛。。。
对于这样的代码运行,又不是修改系统的重要设置,你完全可以自己测试一下,不就清楚了吗?

[ Last edited by Hanyeguxing on 2009-12-17 at 09:57 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-17 09:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 8 楼』:  

嗯,因为我b.txt文件里前面几行是一个模板,比如:
MP3 name:
date:
user:
所以我用批处理直接写好了,程序如下:
echo mp3 name:       >>b.txt
echo date:       >>b.txt
echo user:       >>b.txt
然后下面还有一些其他操作,最后一步才是判断其中.ddo的文件名,想把这个文件名引用到前面MP3 name那个地方去,我试了,可是不行啊。不知道我描述清楚吗?谢谢大侠指教,还有其他方法来描述这个字符串吗?

2009-12-17 10:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 9 楼』:  

for /f "tokens=6 delims=- " %%i in ('findstr /i "\.ddo\>" a.txt') do set i=%%i
然后在其他位置,可以随便使用这个变量%i%



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-17 10:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 10 楼』:  

非常感谢啊,谢谢大侠!

2009-12-17 12:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 11 楼』:  

老大,再问一个问题,我想把指定内容加到txt文本中的指定行怎么操作,比如将字符串ABC加到c.txt文件的第三行。

2009-12-17 13:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 12 楼』:  

原文件为1.txt,忽略文件中的空行:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (1.txt) do (set /a a+=1
echo %%i
if !a! == 2 echo 插入内容或变量)>>hanye.txt
del /q 1.txt
ren hanye.txt 1.txt
原文件为1.txt,不忽略文件中的空行:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('Findstr /i /n ".*" 1.txt') do (set /a a+=1&set i=%%i
echo !i:*:=!
if !a! == 2 echo 插入内容或变量)>>hanye.txt
del /q 1.txt
ren hanye.txt 1.txt
[ Last edited by Hanyeguxing on 2009-12-17 at 21:32 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-17 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
meterfalls
新手上路





积分 8
发帖 8
注册 2009-12-15
状态 离线
『第 13 楼』:  

老大,%%i in ('Findstr /i /n ".*" 1.txt') do (set /a a+=1&set i=%%i
这句里“.*”什么意思啊?

2009-12-18 10:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 14 楼』:  

在Findstr中,“.*”,用来匹配所有字符



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-18 19:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: