Board logo

标题: [求助]文本文件批量改名的问题 [打印本页]

作者: venchia     时间: 2007-7-14 15:23    标题: [求助]文本文件批量改名的问题

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

比如有这个文件

魔斗士.txt

文件的内容如下

  Quote:
  魔斗士
  作者:徐奇峰


【内容简介】

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

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

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

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

这样的形式,不知道能做到吗,谢谢
作者: ccwan     时间: 2007-7-14 16:12
试试这个:
@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
)

作者: ccwan     时间: 2007-7-14 16:15
呵呵,加上书名号:
@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
)

作者: venchia     时间: 2007-7-15 02:30
我是要批量的,不是单个的

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

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

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

不过还是谢谢
附件 1: temp.rar (2007-7-15 02:30, 1.28 K,下载次数: 15)

作者: jmz573515     时间: 2007-7-28 21:08

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

作者: slore     时间: 2007-7-28 21:27
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脚本对字符串处理还是方便
作者: ccwan     时间: 2007-7-29 09:02


  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=
    )
)

作者: venchia     时间: 2007-8-5 14:32
前阵都无法上来,刚刚上来就发现好多解答的方法了,感谢上面所有热心的朋友
作者: venchia     时间: 2007-8-5 15:04


  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 ...

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