`
RednaxelaFX
  • 浏览: 3052609 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

批量重命名的两个脚本

    博客分类:
  • Ruby
阅读更多
链接:
[脚本分析] Quartett!的二进制脚本分析
[脚本分析] 从Quartett!的脚本得到资源列表
Quartett!的文本提取程序
Quartett!文本插入程序

这系列里,文件名一直是个麻烦的问题。一开始我拿到解出来的tkn文件就是找不到原本的文件名的:
引用
一拿到已经从Script.dat中提取出来的脚本文件,我吓了一跳:文件名居然都是MD5……汉公那边果然还没把资源破解完善。不过没关系,只要文件内容是对的就能开工。可以确认的是,脚本(准确说是给到我手上的脚本)的后缀名是tkn。

脚本的临时文件名经历了几次变化:
- 原文件名的MD5(十六进制,32位)+".tkn" :这个是了解到数据包里的文件名是以MD5的形式保存之后采用的临时文件名
例如:f005d888964660664de2719962e2a053.tkn
- 原文件名的MD5(十六进制,32位)+"_"+原文件名长度(十进制)+".tkn" :在进一步研究打包时的计算需要后,发现需要原文件名长度
例如:f005d888964660664de2719962e2a053_12.tkn
- 文件编号(十进制,3位)+"_"+原文件名的MD5(十六进制,32位)+"_"+原文件名长度(十进制)+".tkn" :为了让文件名的顺序更接近原本的脚本在游戏里出现的顺序,在上一种的基础上进一步添加以文件修改时间为顺序的编号。
例如: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
分享到:
评论

相关推荐

    批量随机重命名,批量重命名bat文件

    在提供的压缩包文件中,有两个批处理文件:“批量重命名.bat”和“批量随机重命名.bat”。这两个文件很可能包含了不同的重命名策略,你可以通过运行它们来测试和了解其工作方式。在使用之前,请确保备份好你的文件,...

    文件批量重命名[提供bat脚本、软件两种方式].zip

    对于文件批量重命名,你可以创建一个名为“批量重命名.bat”的批处理文件,以下是一个基本的重命名脚本示例: ```batch @echo off setlocal enabledelayedexpansion set /a count=1 for %%i in (*) do ( set ...

    文件批量重命名python版

    在批量重命名文件时,我们需要用到`os.rename()`函数,它接受两个参数:旧文件名和新文件名,完成文件重命名。 ```python import os def batch_rename(old_dir, new_dir, pattern): for filename in os.listdir...

    文件批量重命名.7z

    在IT领域,文件批量重命名是一项常见的操作,尤其对于数据管理、文件整理或者自动化脚本编写来说至关重要。这个“文件批量重命名.7z”压缩包显然包含了与批量重命名相关的工具或教程。7z是一种高效且开源的压缩格式...

    文件夹批量重命名和添加前缀(命令行版)

    这两个工具允许我们执行一系列的命令,包括对文件和文件夹的操作。在本例中,我们将重点讨论如何在命令行中批量重命名文件夹和添加前缀。 批量重命名文件夹和添加前缀的基本思路是编写一个批处理脚本,通常以`.bat`...

    批量重命名工具.zip

    根据描述,它需要两个关键元素:一个id.txt文件和一个可执行(exe)文件。id.txt文件是新文件名的输入源,每一行代表一个文件的新名称。这样做的好处是可以确保新旧文件名的一一对应,避免重命名过程中出现混乱。 ...

    根据文件修改时间批量重命名文件

    需要注意的是,这两个示例都需要根据实际的文件路径和文件名进行调整。在实际应用中,应确保处理所有可能出现的错误情况,如文件不存在、权限问题等,并适当地处理这些异常。 总的来说,批量重命名文件根据修改时间...

    用Python批量重命名文件.zip

    例如,我们可以使用os和shutil这两个库来操作文件系统,使用re库来处理正则表达式,使用datetime库来处理日期和时间等。通过编写一个Python脚本,我们可以批量重命名文件,节省我们的时间和精力。这个脚本可以根据...

    node批量重命名.zip

    这两个方法接受两个参数,分别是原文件名和新文件名。同样,`renameSync`是同步操作,`rename`则是异步的。 4. **异常处理**:在进行文件操作时,我们应处理可能出现的错误,例如文件已存在、无权限等。这通常通过...

    Linux批量重命名 rename & mv

    需要注意的是,`rename`命令需要三个参数,而非两个。 **示例1:** 将文件名中的`foo`替换为`foo0`: ``` rename 'foo' 'foo0' foo* ``` **示例2:** 使用通配符进行批量重命名: - `?`:代表任何单个字符。 - `...

    应用EXCEL对应批量重命名的最好方法

    如果原始文件名和证件号不在同一行,可以使用VLOOKUP或INDEX/MATCH函数来关联两个列表。VLOOKUP在垂直方向上查找匹配项,而INDEX/MATCH则允许你在任何方向上查找,这在数据结构不规则时更为灵活。 3. **使用公式...

    rename_renamepython_python_批量重命名_

    在提供的压缩包文件中,我们有两个文件:"Python编程_从入门到实践.pdf",这可能是一本关于Python编程的参考书籍,可以帮助初学者理解Python基础;另一个是"rename.py",这是一个实际的Python脚本,很可能包含实现...

    批量重命名文件(源代码)

    这里我们主要讨论基于批处理和Python这两种方法实现批量重命名。 批处理是Windows系统中的一种脚本语言,通过`.bat`文件执行一系列命令。在"20090620.bat"这个文件中,可能包含了使用`ren`或`rename`命令进行文件...

    文件批量重命名

    在IT领域,文件批量重命名是一项常见的操作,尤其在数据管理、文件整理或者自动化脚本编写时非常实用。批量重命名文件可以节省大量手动操作的时间,提高工作效率。在这个场景中,我们有两个关键元素:`ReName.exe`和...

    python批量重命名一个工作簿中的所有工作表.rar

    这个脚本会将工作簿中的所有工作表按照Sheet1, Sheet2, Sheet3...的顺序重命名。当然,你可以根据实际需求调整新的工作表名称列表。在处理大量数据或者需要自动化处理Excel文件的工作流时,这样的脚本能够大大提高...

    在matlab平台下,对一个文件夹下的图片自动改名,可用于大批量图片重命名问题,方便实用

    在这个脚本中,`batch_rename_images`函数接收两个参数:`directory`表示包含图片的文件夹路径,`new_prefix`是新的文件名前缀。`dir(fullfile(directory, '*.jpg'))`找到所有.jpg格式的图片,然后通过`for`循环遍历...

    python批量重命名一个工作簿中的所有工作表.zip

    然后定义了一个名为batch_rename_sheets的函数,该函数接受两个参数:file_path表示需要修改的工作簿路径,new_names表示新的工作表名称列表。在函数内部,我们首先使用load_workbook函数加载指定路径的工作簿。然后...

    批量重命名软件

    5. 错误处理:如果在重命名过程中遇到冲突(如两个文件的新名称相同),软件通常会提示错误并提供解决方案,如自动增加序号以避免冲突。 批量重命名软件是提高文件管理效率的重要工具,尤其适用于需要整理大量照片...

    用文件md5值批量重命名文件

    如果两个文件的MD5值相同,那么它们的内容几乎可以确定是相同的。 **批量重命名的必要性** 在大量文件管理中,批量重命名有助于提高效率,尤其是当文件名不规范或者需要统一格式时。使用文件的MD5值作为新文件名,...

    基于Python实现批量重命名文件

    `os.rename()`函数可以用来重命名文件,其接受两个参数:旧文件名和新文件名。例如,要将文件"old_name.txt"重命名为"new_name.txt",代码如下: ```python import os old_file = 'old_name.txt' new_file = 'new_...

Global site tag (gtag.js) - Google Analytics