琵琶行论坛

 找回密码
 注册
每日签到论坛FTP使用教学领取红包(开放!)论坛FTP搜索引擎
查看: 296|回复: 5

使用文本编辑器提取指定ROMs

[复制链接]

签到天数: 95 天

[LV.6]常住居民II

发表于 2019-10-12 23:52:58 | 显示全部楼层 |阅读模式
本帖最后由 缘来是你 于 2019-10-12 23:52 编辑

我在《ClrMamePro完全教程》中曾提到过一个简单提取相应ROMs的方法

优点是简单快速,只需要使用Sublime Text等高级文本编辑工具就可以操作

简单来说就是,从dat中提取出需要的ROMs名称,然后使用批处理把提取的ROMs复制到指定的文件夹内

首先下载Sublime Text

复制需要筛选的Dat内容到Sublime Text中,如

Chess Champion: Mark V [folder: ccmk5 - size: 2mb]
missing rom: c47024_syp_2364-3-y51 [size: 8192] [CRC32: c210f530] [SHA1: 60ba3809ed3054024508344f654a6846061fafd5]
missing rom: c47025_syp_2364-3-y5a [size: 8192] [CRC32: 3239c96b] [SHA1: 6a23713b30c48546d993a0de8998c8de9044e48c]
missing rom: c47026_syp_2364-3-y5c [size: 8192] [CRC32: 1754ccab] [SHA1: d246b6aa2e2a1858dd6608a4dbf496778f79b22e]
missing rom: c47027_syp_2364-3-y5d [size: 8192] [CRC32: 7c0f7bd8] [SHA1: 68b4566f0501005f6b1739bb24a4bec990421a6f]
missing rom: ccmk5.svg [size: 1887311] [CRC32: 3261bcb2] [SHA1: 46b38a2877faa36ef1adea2b8f484a97b46ea529]

Chess Champion: Mark VI/Philidor [folder: ccmk6 - parent: ccmk5 - size: 2mb]
missing rom: d2732c-e.u1 [size: 4096] [CRC32: 93221b4c] [SHA1: 8561b52c80cab7c04d30eaa14f9520a362d7f822]
missing rom: y6_80 [size: 8192] [CRC32: 8144dd71] [SHA1: 8d6fbb4aa9757149c81d2bf533085dc5203f0751]
missing rom: y6_a0 [size: 8192] [CRC32: dd77dd90] [SHA1: 844aee56e1941f05bdf046d95c5ae687707a2c95]
missing rom: y6_c0 [size: 8192] [CRC32: 705e5718] [SHA1: 513bba3e7344194efaaf022a7934d32d8cba3cb5]
missing rom: y6_e0 [size: 8192] [CRC32: b92c3eb3] [SHA1: 99a20f5e971b8c4228e0eda0a4c05750d46b95f6]

通过观察发现,这两个节点包含两个ROMs,且有相同的特点,ROMs名称前面的字符串同为“folder: ”,后面的字符串为“ -

使用下面表达式选取“folder: ”和“ -”之间且不包含他们的字符串
  1. (?<=folder: ).*?(?= -)
复制代码

//为了避免匹配到第二个“ -”之后的内容,在上面的表达式中使用“.*?”限定匹配为非贪婪模式

使用Ctrl+F打开查找模式,点击查找栏中的“*”启用正则匹配,输入上方表达式,点击“查找全部(Find All)”,选中所有匹配字符串,并复制到新建标签

在新建标签页中使用Ctrl+H打开替换模式,“查找目标框(Find)”中输入表达式
  1. (.*)
复制代码
替换栏(Replace)中输入表达式
  1. copy \1\.zip G:\\rom
复制代码

点击“全部替换(Replace All)

得到代码
  1. copy ccmk5.zip G:\rom
  2. copy ccmk6.zip G:\rom
复制代码
//从此目录复制ccmk5.zip和ccmk6.zip到G盘的rom文件夹

保存上面代码为bat格式,放入源文件所在目录,运行即可

如保存为以下代码,并命名为“提取.bat”:
  1. @echo off
  2. ::设定变量
  3. set /p path=请输入目的地的盘符或路径,然后按回车:
  4. @echo on
  5. ::在指定盘符中创建一个名为"rom"的文件夹
  6. md %path%\rom
  7. ::复制ccmk5.zip到指定盘符的rom文件夹中
  8. copy ccmk5.zip %path%\rom
  9. copy ccmk6.zip %path%\rom
  10. Pause
复制代码
也可以使用绝对路径,将bat文件放在任意位置运行


  1. copy F:\mame\roms\ccmk5.zip G:\rom
  2. copy F:\mame\roms\ccmk6.zip G:\rom
复制代码

如需要提取其它ROMs,只需观察其所有的共同点,然后写入适当的表达式即可

注意

如果批处理文本中含有中文字符,需要在保存时将编码选择为“ANSI

路径中不能包含空格,否则需要以双引号标识


延伸一下

复制指定周边文件

CD进入源文件目录,输入命令
  1. dir /b >列表.txt
复制代码
//导出该文件夹下面的所有文件的名称到该文件夹,并命名为“列表.txt”

然后通过替换得到所需要代码,保存为bat文件运行



评分

3

查看全部评分

签到天数: 962 天

[LV.10]以坛为家III

发表于 7 天前 | 显示全部楼层
你还是把这篇文章写入文档里然后供人下载阅读吧。
回复 支持 反对

使用道具 举报

签到天数: 95 天

[LV.6]常住居民II

 楼主| 发表于 7 天前 | 显示全部楼层
光翼火蜂 发表于 2019-10-13 13:49
你还是把这篇文章写入文档里然后供人下载阅读吧。

一共也没多少字,没图片排班就不容易乱,挺好的,就这哇

回复 支持 反对

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 7 天前 | 显示全部楼层
看上去不错啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 6 天前 | 显示全部楼层
919实用工具三合一 1.3 绿色版_文件批量改名、移动、复制工具,这个工具也能提取文件。
回复 支持 反对

使用道具 举报

签到天数: 95 天

[LV.6]常住居民II

 楼主| 发表于 6 天前 来自手机 | 显示全部楼层
cameplay 发表于 2019-10-14 13:51
919实用工具三合一 1.3 绿色版_文件批量改名、移动、复制工具,这个工具也能提取文件。 ...

批要确定被提取文件的文件名,只能从dat中确定,还有就是,在命名无规则的情况下,大多软件都难以实现批量操作。
slan帮我写过一个小程序,可以实现提取任意分类类型的dat节点,不过他也需要读取dat中的关键字来确定所需节点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|琵琶行论坛 ( 赣ICP备12000882号 )

GMT+8, 2019-10-20 16:34 , Processed in 0.018843 second(s), 12 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表