批量重命名的两个脚本

链接:
[url=http://rednaxelafx.iteye.com/blog/149811][脚本分析] Quartett!的二进制脚本分析[/url]
[url=http://rednaxelafx.iteye.com/blog/149964][脚本分析] 从Quartett!的脚本得到资源列表[/url]
[url=http://rednaxelafx.iteye.com/blog/168505]Quartett!的文本提取程序[/url]
[url=http://rednaxelafx.iteye.com/blog/206720]Quartett!文本插入程序[/url]

这系列里,文件名一直是个麻烦的问题。一开始我拿到解出来的tkn文件就是找不到原本的文件名的:
[quote]一拿到已经从Script.dat中提取出来的脚本文件,我吓了一跳:文件名居然都是MD5……汉公那边果然还没把资源破解完善。不过没关系,只要文件内容是对的就能开工。可以确认的是,脚本(准确说是给到我手上的脚本)的后缀名是tkn。[/quote]
脚本的临时文件名经历了几次变化:
- [color=blue]原文件名的MD5(十六进制,32位)+".tkn"[/color] :这个是了解到数据包里的文件名是以MD5的形式保存之后采用的临时文件名
例如:f005d888964660664de2719962e2a053.tkn
- [color=blue]原文件名的MD5(十六进制,32位)+"_"+原文件名长度(十进制)+".tkn"[/color] :在进一步研究打包时的计算需要后,发现需要原文件名长度
例如:f005d888964660664de2719962e2a053_12.tkn
- [color=blue]文件编号(十进制,3位)+"_"+原文件名的MD5(十六进制,32位)+"_"+原文件名长度(十进制)+".tkn"[/color] :为了让文件名的顺序更接近原本的脚本在游戏里出现的顺序,在上一种的基础上进一步添加以文件修改时间为顺序的编号。
例如:000_f005d888964660664de2719962e2a053_12.tkn

但是距上次弄这些脚本已经有半年多的时间,当时编好号的*.tkn文件都不见了。今天鬼鬼问我要原始的、编过号的脚本,我就只能重新弄一份了。

写了段脚本来解决这个重命名的问题:
def sort_and_rename( dir = '.', &block )
entries = Dir.entries( dir ).grep( /^.*\.tkn$/i ).sort_by &block
count = 0
entries.each do |e|
File.rename e, "%03d_%s" % [ count, e ]
count += 1
end
end

sort_and_rename { |e| File.mtime e }

本来嘛这应该就OK了。但是这样编出来的号居然跟以前编出来的顺序不一样。我一时囧了。
怎么办呢。突然想起,鬼鬼手上有编过号的提取后的文本文件。既然如此就用那些文件来对应的做一次重命名就是了。
于是又写了个脚本:
def cmp_and_rename( srcdir = '.', tgtdir = "./text" )
Dir.entries( tgtdir ).grep( /^(\d\d\d_)(.*)\.txt$/i ) do |fname|
File.rename $2 << ".tkn", $1 << $2 << ".tkn"
end
end

cmp_and_rename

问题顺利解决 T T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值