2007年3月15日星期四

[Totalcmd]根据文本文件的内容依次对文件进行批量重命名

[Totalcmd]根据文本文件的内容依次对文件进行批量重命名

上次写过一篇关于根据某文件的第几行对各文件进行批量重命名的文章。
http://chenqj.blogspot.com/search/label/totalcmd

主要的方法是根据TC的一个script wdx插件编写脚本来完成的。

由于最近碰到一个类似的问题,有某期刊某一年的一批caj期刊文件,名字顺序是对的,但是只是简单的1,2,3之类的名字。而具体的文章名字通过查询期刊网已经按照顺序放在一个文本文件里面。

比如c:\123.txt中有新的名字顺序
1.数学的应用
2.物理的范畴

那么研究,写了一个这样的代码
(注:下面的代码是针对一个文件名前面有001,002等三个数字开头的txt文件进行操作的,其脚本给出的结果是根据这前面的三位数字代表的数值去查找相对应的c:\123.txt中的行的内容,来显示在wdx的content行中。)
(注1:怎么给待操作的文件预先加上3位数字?,可以通过先重命名一次来得到)
(注2:怎么根据content进行批量重命名:见重命名中的plugin部分)

vbs代码:

'Script for Script Content Plugin
'qjchen

Dim fso, ts, s, re, fd ,f
Set fso = CreateObject("Scripting.FileSystemObject")
sExt = lcase(fso.GetExtensionName(filename))
Const ForReading = 1

Select Case sExt
case "bar"
content="bar file"' Just For testing
'---------------------------------
case "txt"
Set fd = fso.GetFile(filename)
name = fd.Name
num=left(name,3)
num=cint(num)
f1="c:\123.txt"
Set f = fso.GetFile(f1)
Set ts = fso.OpenTextFile(f1, ForReading)
for i= 1 to num
s = ts.readline
next
ts.Close
content= s
Case Else
'content = sExt + " file type"
End Select


可以把这段代码存为该插件目录下的1.vbs

打开script.ini,修改其中的extension段为:

[Extension]
Script=1.vbs

结果如图



由于脚本编写水平属于现学现用型,有点乱,见笑了,应可精简不少。