文件整理-如何实现将当前文件夹内的所有文件,提取多个文件文件名中的相同字符并按相同字符生成子文件夹,然后将对应的多个文件移动到子文件夹内。

在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

好的,我将这些文件分成了两组:

第一组:文件1、文件2、文件3、文件4,这是关于电影《律政英雄》(Lawyer.Lawyer.1997)的文件。

第二组:文件5、文件6、文件7、文件8,这是关于电影《行運一條龍》(The.Lucky.Guy.1998)的文件。

:stuck_out_tongue:

1 Like

Public use of Chatbot has only been permitted in these Categories: 贵宾室, #

记得以前论坛里有个类似的需求,后来怎么解决的有点模糊了,你可以再搜索一下看看。

如果是手动写规则的话可以用 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。。只要你描述清楚,这点代码不在话下。。

前提: 如果文件全是这种影片文件及相关海报,并且命名统一的话
可以用批处理实现,按下面的步骤自己写或者跑一下 GPT 吧:

  1. 查询当前文件夹里所有视频文件并导出其文件名(不含文件后缀)为列表
  2. 根据列表创建对应的文件夹
  3. 根据列表查找并移动相应的文件到对应文件夹

具体步骤可以进一步合并或分解
也可以直接对文件列表的内容进行正则修改来制作一个 move 的批处理

趁失眠补充个用 ReNamer 通过重命名来实现的邪道方法吧
当初介绍这软件时说过这个技巧来着

  1. 把需要归档的文件夹拖进 ReNamer
  2. 按下面的图片添加规则(其他场景需要对应具体文件名规律进行修改
  3. 重命名

第一个规则是通过正则把 电影名-海报 改成 电影名\电影名-海报 的形式
第二个规则是纠正第一个规则在文件名后面多出来的一个 \
为什么会出现这情况,以我现在的状态没心思去琢磨了
要么是程序bug,要么我bug了

挺好用的一个软件,感觉自己没推起来有点遗憾……
睡了

2 Likes

分类如果原本命名有规范就比较容易实现
就顶楼的示例文件提取的规则就是每部电影最后都有 年份
设-其他-分类 (.+\d{4})
如果原本命名不规范就比较难整了
20230328083245


1 Like

本来排序都帮你排好了,有索引,搜一下就行.
建议啥都别改,都放一个文件夹.再创建那么多文件夹,点鼠标都点哭了.
这叫一念生就入轮回出不来了.

每次遇到这类问题,我都会祭出史上大杀器

使用《菲菲更名宝贝 之 得意非凡 5.0》将这些文件进行归类, 归类时会利用文件名自带的文件夹名(不同的电影名字)信息建立文件夹名,之后这些文件会自动分别存放在这些文件夹中;

1 Like

还得是大杀器,稍微改一下就基本通用了

思路对了方法就多种多样了,果然不走寻常路的邪道才是王道啊

我问了一下GPT,答复如下:

您可以按照以下步骤在Windows系统中实现将当前文件夹内的所有文件,提取多个文件文件名中的相同字符并按相同字符生成子文件夹,然后将对应的多个文件移动到子文件夹内:

  1. 打开Windows资源管理器并进入要操作的文件夹。
  2. 在文件夹中单击“文件”选项卡,然后单击“命令提示符”按钮。
  3. 在命令提示符窗口中,输入以下命令并按Enter键:

for %i in (*) do ( md “%ni” 2>nul move “%i” “%ni” )

此命令将遍历当前文件夹中的所有文件,并为每个文件名创建一个子文件夹。然后,它将移动每个文件到其对应的子文件夹中。
4. 等待命令执行完毕,生成的子文件夹中会包含对应的多个文件。

代码不可用,而且每个文件名创建一个子文件夹也不能实现需求 :sweat_smile:

我写过一个vbs,打开表格后,一运行这个就会生成目录下的文件信息,你再生成命令,move过去就好。http://r34.cc/Uploads/2022-04-04/624ad9e86cb837.68772856.vbs

用批处理做这个的话应该仅根据视频文件的文件名来创建文件夹
然后再用视频文件名加上通配符来匹配其他文件并移动