Sharks
March 27, 2023, 3:03pm
1
在Windows系统中,如何实现将当前文件夹内的所有文件,提取多个文件文件名中的相同字符并按相同字符生成子文件夹,然后将对应的多个文件移动到子文件夹内。
举例:
文件1:Lawyer.Lawyer.1997.-fanart.jpg
文件2:Lawyer.Lawyer.1997.-landscape.png
文件3:Lawyer.Lawyer.1997.-poster.jpg
文件4:Lawyer.Lawyer.1997.mkv
文件5:The.Lucky.Guy.1998.BluRay-fanart.jpg
文件6:The.Lucky.Guy.1998.BluRay-landscape.png
文件7:The.Lucky.Guy.1998.BluRay-poster.jpg
文件8:The.Lucky.Guy.1998.BluRay.mp4
生成子文件夹Lawyer.Lawyer.1997并将文件1~4移入其中,
生成子文件夹The.Lucky.Guy.1998.BluRay并将文件2~8移入其中。
ChatGPT
(ChatGPT)
March 27, 2023, 3:43pm
3
Public use of Chatbot has only been permitted in these Categories: 贵宾室 , #
dangerace
(dangerace)
March 27, 2023, 3:44pm
4
记得以前论坛里有个类似的需求,后来怎么解决的有点模糊了,你可以再搜索一下看看。
allor
(allor)
March 27, 2023, 5:33pm
5
如果是手动写规则的话可以用 DropIt ,自动识别的话就难了点
因为你列举的文件即可按照 1~4、5~8 来分类,也可以按照 1&5、2&6、3&7、4&8来分
半自动的话,以前我写过个归档的脚本,可以右键选中文件后归纳到新建的指定名称的文件夹
我自个是通过发送到菜单使用,默认文件夹名是按右键时所在文件名
Dim FSO,objFiles,objFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFiles=WScript.Arguments
if objFiles.Count=0 Then
MsgBox "未选中文件", vbInformation, "提示"
end if
for i=0 To objFiles.Count-1
objFile = objFiles(i)
If i=0 Then
strName = Mid(objFile,InStrRev(objFile,"\")+1,InStrRev(objFile,".")-InStrRev(objFile,"\")-1)
strPath = Left(objFile,InStrRev(objFile,"\"))
M = InputBox("输入归类文件夹名称:"," 文件整理",strName) & "\"
strPath = strPath & M
If Not (FSO.FolderExists(strPath)) Then
FSO.CreateFolder strPath
End If
strPath = strPath & "\"
End If
FSO.MoveFile objFile,strPath
next
问问 chatgpt。。只要你描述清楚,这点代码不在话下。。
allor
(allor)
March 27, 2023, 5:57pm
7
前提: 如果文件全是这种影片文件及相关海报,并且命名统一的话
可以用批处理实现,按下面的步骤自己写或者跑一下 GPT 吧:
查询当前文件夹里所有视频文件并导出其文件名(不含文件后缀)为列表
根据列表创建对应的文件夹
根据列表查找并移动相应的文件到对应文件夹
具体步骤可以进一步合并或分解
也可以直接对文件列表的内容进行正则修改来制作一个 move 的批处理
allor
(allor)
March 27, 2023, 6:27pm
8
趁失眠补充个用 ReNamer 通过重命名来实现的邪道方法吧
当初介绍这软件时说过这个技巧来着
把需要归档的文件夹拖进 ReNamer
按下面的图片添加规则(其他场景需要对应具体文件名规律进行修改
重命名
第一个规则是通过正则把 电影名-海报 改成 电影名\电影名-海报 的形式
第二个规则是纠正第一个规则在文件名后面多出来的一个 \
为什么会出现这情况,以我现在的状态没心思去琢磨了
要么是程序bug,要么我bug了
挺好用的一个软件,感觉自己没推起来有点遗憾……
睡了
2 Likes
loli
March 28, 2023, 12:39am
9
分类如果原本命名有规范就比较容易实现
就顶楼的示例文件提取的规则就是每部电影最后都有 年份
设-其他-分类 (.+\d{4})
如果原本命名不规范就比较难整了
EditRename
用熟悉的文本编辑器,所见即所得的重命名
使用
运行EditRename.exe, 选择编辑器
编辑器需能在标题显示文件名
不要调整行顺序,不要删除行,尽量在一项操作完成再进行后继续操作
传入参数
拖拽文件至主界面上
拖拽文件至列表界面上 (清除当前列表重新添加)
将文件路径作为参数传入
将文件路径复制到剪贴板,然后将 clip 作为唯一参数传入
将文件路径保存至 %temp% 目录下的指定文件(UTF-8编码),将此文件作为唯一参数传入
将文件拖到程序图标上有数量限制
开始重命名
编辑器模式 关闭编辑器时会自动重命名
多标签编辑器并设置时切换标签立即进行重命名
主界面 重, X及列界面 重命名 开始重命名
退而重命名
直接关闭界面或右键托盘图标退出 直接退出程序
主界面关, 列界面关闭 退出重命名而不退出程序
设 设置界面
列 文件列表界面
X 副界面 一些简单的编辑
造 生成规则界面
其他 一些非通用的操作
特色功能
表达式 为操作添加前置条件
很多时候仅想操作部分文件,筛选文件过于复制可用此作为前置条件
表达式 工作…
1 Like
live9999
(live9999)
March 28, 2023, 1:09am
10
本来排序都帮你排好了,有索引,搜一下就行.
建议啥都别改,都放一个文件夹.再创建那么多文件夹,点鼠标都点哭了.
这叫一念生就入轮回出不来了.
每次遇到这类问题,我都会祭出史上大杀器
使用《菲菲更名宝贝 之 得意非凡 5.0》将这些文件进行归类, 归类时会利用文件名自带的文件夹名(不同的电影名字)信息建立文件夹名,之后这些文件会自动分别存放在这些文件夹中;
1 Like
Sharks
March 28, 2023, 1:56am
13
思路对了方法就多种多样了,果然不走寻常路的邪道才是王道啊
我问了一下GPT,答复如下:
您可以按照以下步骤在Windows系统中实现将当前文件夹内的所有文件,提取多个文件文件名中的相同字符并按相同字符生成子文件夹,然后将对应的多个文件移动到子文件夹内:
打开Windows资源管理器并进入要操作的文件夹。
在文件夹中单击“文件”选项卡,然后单击“命令提示符”按钮。
在命令提示符窗口中,输入以下命令并按Enter键:
for %i in (*) do ( md “%ni” 2>nul move “%i” “%ni” )
此命令将遍历当前文件夹中的所有文件,并为每个文件名创建一个子文件夹。然后,它将移动每个文件到其对应的子文件夹中。
4. 等待命令执行完毕,生成的子文件夹中会包含对应的多个文件。
Sharks
March 28, 2023, 3:35am
15
代码不可用,而且每个文件名创建一个子文件夹 也不能实现需求
lilyhcn1
(lilyhcn1)
March 28, 2023, 3:56am
16
allor
(allor)
March 28, 2023, 4:29am
17
用批处理做这个的话应该仅根据视频文件的文件名来创建文件夹
然后再用视频文件名加上通配符来匹配其他文件并移动