设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2912|回复: 6
打印 上一主题 下一主题

[已经解决] 如何检测游戏文件夹内的某个文件夹的所有文件呢?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3770
在线时间
741 小时
注册时间
2016-6-2
帖子
211

开拓者

跳转到指定楼层
1
发表于 2018-1-26 17:01:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
比如在游戏文件夹中有一个文件夹叫“123”,
里面有3个文件,分别叫做“妨碍咱都渣渣!.txt”、
“我练功发自真心!.png”和“变可爱啦!梁非凡!.wav”
我该如何检测这些文件并返回其名称组成的数组(可以无顺序)?(文件数量未知的话)

个人认为的伪代码:
  1. a = 检测文件夹内所有文件("123")
  2. p a => [“妨碍咱都渣渣!.txt”, “我练功发自真心!.png”, “变可爱啦!梁非凡!.wav”]
复制代码

Lv3.寻梦者

梦石
0
星屑
2709
在线时间
166 小时
注册时间
2018-1-19
帖子
89
2
发表于 2018-1-26 19:44:35 | 只看该作者
类似于https://rpg.blue/thread-82439-1-1.html
原贴例子是找gif的,乃可以自己设定。然后代码将文件名都放入了total_name里,然后你输出出来就行了
例子我改成了找Data里的rxdata文件了
  1. @old_dir = Dir.pwd
  2.     Dir.chdir("Data")
  3.     @total_name= []
  4.     for g in Dir["*"]
  5.       suf = g.split(/\./)
  6.       if suf[1].is_a?(String) and suf[1].downcase == "rxdata"
  7.         @total_gif.push(g)
  8.         Dir.mkdir(suf[0]) unless Dir["*"].include? suf[0]
  9.       end
  10.     end
  11.     Dir.chdir(@old_dir)
  12.     p @total_name
  13.    
复制代码

评分

参与人数 1星屑 +50 收起 理由
guoxiaomi + 50 认可答案

查看全部评分

求勾搭QwQ(bu)会使用脚本和事件QwQ虽然脚本还只是初级程度,还在学习ingQwQ
平常很闲,特别想回答问题和解决问题。再求勾搭呜呜呜QWQ
QQ:841155947
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33499
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2018-1-26 21:44:49 | 只看该作者
本帖最后由 芯☆淡茹水 于 2018-1-26 21:57 编辑

#比如 Graphics/Pictures 文件夹里所有文件
all_files = Dir::entries("Graphics/Pictures")

#所有 png 文件
all_png_files = all_files.find_all{|name| name.split(".").pop == "png"}

#所有 txt 文件
all_txt_files = all_files.find_all{|name| name.split(".").pop == "txt"}

#其它以此类推。判断文件类型目前就只想到这一个方法,不知道会不会判错。

#也可以方便点写个函数
def Lookup_file(path, file_type)
  return Dir::entries(path).find_all{|name| name.split(".").pop == file_type}
end

#要查找就直接用写的函数,比如图片的:
Lookup_file("Graphics/Pictures", "png")

评分

参与人数 1星屑 +50 收起 理由
guoxiaomi + 50 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2018-1-27 10:18:50 | 只看该作者
本帖最后由 RyanBern 于 2018-1-27 10:20 编辑

建议使用 Dir.glob,充分利用这些特性。
RUBY 代码复制
  1. # 逐个列出当前文件夹任意文件
  2. Dir.glob("*") do |f|
  3.   p f
  4. end
  5.  
  6. # 逐个列出当前文件夹的 .rxdata 文件
  7. Dir.glob("*.rxdata") do |f|
  8.   p f
  9. end
  10.  
  11. # 逐个列出 Data 文件夹以 Map 打头的文件
  12. Dir.glob("Data/Map*") do |f|
  13.   p f
  14. end

点评

直接*.rxdata的情况会匹配到a.b.rxdata之类的东西,除了用p f if f.split(/\./).size==2替换p f还有其他写法吗?  发表于 2018-1-29 01:38

评分

参与人数 1星屑 +50 收起 理由
guoxiaomi + 50 同醋

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3770
在线时间
741 小时
注册时间
2016-6-2
帖子
211

开拓者

5
 楼主| 发表于 2018-1-27 13:34:21 | 只看该作者
RyanBern 发表于 2018-1-27 10:18
建议使用 Dir.glob,充分利用这些特性。
# 逐个列出当前文件夹任意文件
Dir.glob("*") do |f|

问题解决,谢谢你的帮助!
没想到居然还有这个功能。
我觉得这个脚本很适合用来
制作音乐播放器或者是DLC的检测器。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42464
在线时间
7606 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

6
发表于 2018-1-29 12:16:41 | 只看该作者
  1. p Dir["Graphics/*.png"]
复制代码

即可

评分

参与人数 1星屑 +50 +1 收起 理由
RyanBern + 50 + 1

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-30 19:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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