![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 23:51 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何获取文本文件里一个文件名的前几个字符 |
| 可打印版本 1,313 / 13 |
| 第1楼 meterfalls | 发表于 2009-12-16 19:39 |
| 新手上路 发帖 8 积分 8 | |
|
如何获取文本文件里一个文件名的前几个字符 比如我有一个文本文件a.txt。
里面的内容其中有一行是: 2009-12-16 12:15 290 GGF324579-1-4.ddo 这行的位置不固定,能否通过遍历,找到GGF324579这几个字符,并把这几个字符打印到另一个文本文件里,在下面这行中引用出来: echo mp3 name: GGF324579 |
|
| 第2楼 Hanyeguxing | 发表于 2009-12-16 21:09 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
查找字符串,需要该字符串或其所在行具有排他性的特征。
你没有提供这个特征,是不能查找的。 例如: 1,该字符串字首为GG,而其他字符没有这个特征。 2,该字符串行尾为.ddo,而其他行没有。 3,该字符串所在行的行首为此文件的创建时间等。 [ Last edited by Hanyeguxing on 2009-12-16 at 21:13 ] |
|
| 第3楼 meterfalls | 发表于 2009-12-16 21:27 |
| 新手上路 发帖 8 积分 8 | |
|
该行结尾为.ddo
找到这个后缀名,然后可以找到这个文件名的前面几个字符,只要“-1”前的所有字符即可。大侠赐教。 |
|
| 第4楼 meterfalls | 发表于 2009-12-16 21:28 |
| 新手上路 发帖 8 积分 8 | |
|
.ddo是排他性的后缀名!
|
|
| 第5楼 Hanyeguxing | 发表于 2009-12-16 22:15 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
这个时候获取的%%i就是你要的。 |
|
| 第6楼 meterfalls | 发表于 2009-12-17 09:48 |
| 新手上路 发帖 8 积分 8 | |
|
谢谢楼上的解答,%%i确实就是我想要的那串字符,但是还有最后一步,就是我想把%%i代表的这串字符输出到另一个文本文件b.txt里,达到这样的效果:
mp3 name: GGF324579.mp3 我事先写了一个批处理用于产生b.txt, echo mp3 name: %%i.mp3 >>b.txt 但是现在这个%%i能否像这样引用呢? 谢谢! |
|
| 第7楼 Hanyeguxing | 发表于 2009-12-17 09:53 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
%%i只能在for内部直接使用。就是这样用的嘛。。。 对于这样的代码运行,又不是修改系统的重要设置,你完全可以自己测试一下,不就清楚了吗? [ Last edited by Hanyeguxing on 2009-12-17 at 09:57 ] |
|
| 第8楼 meterfalls | 发表于 2009-12-17 10:10 |
| 新手上路 发帖 8 积分 8 | |
|
嗯,因为我b.txt文件里前面几行是一个模板,比如:
MP3 name: date: user: 所以我用批处理直接写好了,程序如下: echo mp3 name: >>b.txt echo date: >>b.txt echo user: >>b.txt 然后下面还有一些其他操作,最后一步才是判断其中.ddo的文件名,想把这个文件名引用到前面MP3 name那个地方去,我试了,可是不行啊。不知道我描述清楚吗?谢谢大侠指教,还有其他方法来描述这个字符串吗? |
|
| 第9楼 Hanyeguxing | 发表于 2009-12-17 10:59 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
for /f "tokens=6 delims=- " %%i in ('findstr /i "\.ddo\>" a.txt') do set i=%%i
然后在其他位置,可以随便使用这个变量%i% |
|
| 第10楼 meterfalls | 发表于 2009-12-17 12:29 |
| 新手上路 发帖 8 积分 8 | |
|
非常感谢啊,谢谢大侠!
|
|
| 第11楼 meterfalls | 发表于 2009-12-17 13:55 |
| 新手上路 发帖 8 积分 8 | |
|
老大,再问一个问题,我想把指定内容加到txt文本中的指定行怎么操作,比如将字符串ABC加到c.txt文件的第三行。
|
|
| 第12楼 Hanyeguxing | 发表于 2009-12-17 21:28 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
原文件为1.txt,忽略文件中的空行:
原文件为1.txt,不忽略文件中的空行: [ Last edited by Hanyeguxing on 2009-12-17 at 21:32 ] |
|
| 第13楼 meterfalls | 发表于 2009-12-18 10:08 |
| 新手上路 发帖 8 积分 8 | |
|
老大,%%i in ('Findstr /i /n ".*" 1.txt') do (set /a a+=1&set i=%%i
这句里“.*”什么意思啊? |
|
| 第14楼 Hanyeguxing | 发表于 2009-12-18 19:01 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
在Findstr中,“.*”,用来匹配所有字符
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |