中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]文本文件批量改名的问题
作者:
标题: [求助]文本文件批量改名的问题 上一主题 | 下一主题
venchia
初级用户




积分 125
发帖 11
注册 2004-1-25
状态 离线
『楼 主』:  [求助]文本文件批量改名的问题

比如在某文件夹有若干文本文件,想在想提取这些文本文件的前两行,并组合更改文本文件的名字,不知道要怎么做呢

比如有这个文件

魔斗士.txt

文件的内容如下

  Quote:
  魔斗士
  作者:徐奇峰


【内容简介】

  身怀一身精湛武艺的张如飞,在一次醉酒之后意外与来自K星球的不明飞行器打了照面,并意外获得了有“南斗六星主生”功效的六粒丹药,此丹药能让受到意外伤害死亡的人起死回生并很快恢复到死前的状态。
  从此,张如飞走上了不平凡的道路。

文件前面都有4个半角字符,不过由于在这里会变形,所以用了两个全角字符代替

现在想提取文件的第一行和第二行,组合成

《魔斗士》作者:徐奇峰.txt

这样的形式,不知道能做到吗,谢谢

2007-7-14 15:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 2 楼』:  

试试这个:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
    set var=!var!%%j
    set var=!var: =!
    if %%i equ 2 ren a.txt !var!.txt
)




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-7-14 16:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 3 楼』:  

呵呵,加上书名号:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
    set var=《!var!》%%j
    set var=!var: =!
    set var=!var:《》=!
    if %%i equ 2 ren a.txt !var!.txt
)




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-7-14 16:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
venchia
初级用户




积分 125
发帖 11
注册 2004-1-25
状态 离线
『第 4 楼』:  

我是要批量的,不是单个的

还有,就算用a.txt也不行,我用下面附件的几个文件测试失败

比如下面的几个文件是想一次性的改名为

《魔斗士》作者:徐奇峰.txt
《逍遥寻秦传》作者:楚凌天.txt
《妖怪传记》作者:岚.txt

不过还是谢谢

附件 1: temp.rar (2007-7-15 02:30, 1.28 K,下载次数: 15)
2007-7-15 02:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 5 楼』:  


set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(".")
for each file in folder.files
    if ucase(right(file,3))="TXT" then
        with fso.opentextfile(file)
            n="《" & trim(.readline) & "》"
            n=n & trim(.readline)
            .close
        end with
        file.name=n & ".txt"
    end if
next


   此帖被 +1 点积分    点击查看详情   
评分人:【 slore 分数: +1  时间:2007-7-28 21:26


2007-7-28 21:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 6 楼』:  

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.getfolder(".")
For Each file In folder.files
    If UCase(Right(file,3)) = "TXT" Then
        With
fso.OpenTextFile(file)
            
n = "" & Trim(.ReadLine) & ""
            n = n & Trim(.ReadLine)
            .
Close
        End With
        
file.name = n & ".txt"
    End If
Next

Set
folder = Nothing
Set
fso = Nothing

VBS脚本对字符串处理还是方便

2007-7-28 21:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by venchia at 2007-7-15 02:30:
我是要批量的,不是单个的

还有,就算用a.txt也不行,我用下面附件的几个文件测试失败

比如下面的几个文件是想一次性的改名为

《魔斗士》 ...

你的测试失败是因为全角、半角问题。
用你的附件测试了以下代码,成功。
@echo off&setlocal enabledelayedexpansion
for /f %%a in ('dir/b *.txt') do (
    for /f "tokens=1* delims=:" %%i in ('findstr /n .* %%a') do (
    set "var=!var!%%j"
    set var=!var: =!
    if %%i equ 2 ren %%a 《%%~na》!var!.txt
    set var=
    )
)




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-7-29 09:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
venchia
初级用户




积分 125
发帖 11
注册 2004-1-25
状态 离线
『第 8 楼』:  

前阵都无法上来,刚刚上来就发现好多解答的方法了,感谢上面所有热心的朋友

2007-8-5 14:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
venchia
初级用户




积分 125
发帖 11
注册 2004-1-25
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by ccwan at 2007-7-29 09:02 AM:


你的测试失败是因为全角、半角问题。
用你的附件测试了以下代码,成功。

[code]@echo off&setlocal enabledelayedexpansion
for /f %%a in ('dir/b *.txt') do (
...

如果遇到全角跟半角都有的,就不行了

还有用的是findstr,遇到文件比较大时候,需要等很久

  Quote:
Originally posted by slore at 2007-7-28 09:27 PM:
Set fso = CreateObject("Scripting.FileSystemObject")
[/c ...

这个遇到有《》符号的文件名,就会出错

2007-8-5 15:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: