通过混合文件名中具有适当文件夹名的文件进行排序

时间:2019-01-25 20:25:35

标签: powershell batch-file cmd ps1

我已经将超过10000 mp4的文件处理为gif文件,它们在我之前使用的一批标题中都带有“类别”,因为大约有1000个类别(因此有1000个文件夹),而且我的软件一次只能处理一个文件夹,所以我用它们的父文件夹对它们进行了重命名(以便以后进行排序),然后将它们放在“母亲”文件夹中。他们的名字中都有随机生成的字母+标题+类别。类别或实际文件名都没有相同数量的字母(如果相关) 文件夹和文件名始终以“ reddit_sub_CATEGORY”开头。 类别总是小写,没有数字或特殊字符。

文件示例(其中有10000多个)

d:\motherfolder\reddit_sub_funnycatswithdog_983j331_cutecattries-to_eatdog.gif
d:\motherfolder\reddit_sub_funnydogs_fdsljdsd9s_kiotdawg_123.gif
d:\motherfolder\reddit_sub_randommemes_023093x23_uploadedtitle.gif
d:\motherfolder\reddit_sub_imoutofrandomnames_92382j38du8yu_socute.gif
d:\motherfolder\reddit_sub_ and over 9001 more

文件夹(超过1000个)

d:\sortedfolders\reddit_sub_funnycatswithdog\
d:\sortedfolders\reddit_sub_funnydogs\
d:\sortedfolders\reddit_sub_randommemes\
d:\sortedfolders\reddit_sub_imoutofrandomnames\
d:\sortedfolders\reddit_sub_ and over 999 more

我尝试了所有可以找到的脚本,花了很多时间试图使它们无济于事。

我实际上是由于不小心造成的批次差而丢失了工作,但是我确实有做到这一点的批次。也许可以解决这个问题而做相反的事情。

更新-找不到它!! 类似于

ECho off
rem Enter into Root Folder
cd /d %~dp0
cd d:\rip\mp4\mothermp4
rem Process each SUB folder
for /D %%u in (*) do (
   rem Enter into the SUB folder
   cd "%%u"
   rem Process each Project
   for %%p in (*) do (
      rem Move all files one level up
      move *.* ..
      rem Go back one level up to root folder

   )
   cd ..
)

我找到了这个网站,并将其修改为我所需要的。但我只能找到这个无效的版本。这个甚至都没有重命名

我希望文件夹将所有适当的文件分类到其中。 (如果可能,则没有副本,大约150gb!)

例如;

d:\sortedfolders\reddit_sub_funnycatswithdog\reddit_sub_funnycatswithdog_983j331_cutecattries-to_eatdog.gif
d:\sortedfolders\reddit_sub_funnydogs_fdsljdsd9s\reddit_sub_funnydogs_fdsljdsd9s_kiotdawg_123.gif
d:\sortedfolders\reddit_sub_randommemes\reddit_sub_randommemes_023093x23_uploadedtitle.gif
d:\sortedfolders\reddit_sub_imoutofrandomnames\reddit_sub_imoutofrandomnames_92382j38du8yu_socute.gif 

更新的请求- 同时在文件名

中删除“ reddit_sub_category_”
d:\sortedfolders\reddit_sub_funnycatswithdog\83j331_cutecattries-to_eatdog.gif
d:\sortedfolders\reddit_sub_funnydogs_fdsljdsd9s\fdsljdsd9s_kiotdawg_123.gif
d:\sortedfolders\reddit_sub_randommemes\023093x23_uploadedtitle.gif
d:\sortedfolders\reddit_sub_imoutofrandomnames\92382j38du8yu_socute.gif 

1 个答案:

答案 0 :(得分:0)

之前运行的树

> tree D:\ /F
D:\
├───motherfolder
│       reddit_sub_funnycatswithdog_983j331_cutecattries-to_eatdog.gif
│       reddit_sub_funnydogs_fdsljdsd9s_kiotdawg_123.gif
│       reddit_sub_imoutofrandomnames_92382j38du8yu_socute.gif
│       reddit_sub_randommemes_023093x23_uploadedtitle.gif
│
└───sortedfolders
    ├───reddit_sub_funnycatswithdog
    ├───reddit_sub_funnydogs
    ├───reddit_sub_imoutofrandomnames
    └───reddit_sub_randommemes

这批

:: Q:\Test\2019\01\25\SO_54372309.cmd
@Echo off
Set "FileBase=D:\motherfolder"
Set "FolderBase=D:\sortedfolders"
for /d %%A in (%FolderBase%\*) Do Move "%FileBase%\%%~nA*" "%%A\"

及之后:

> tree /F D:\
D:\
├───motherfolder
└───sortedfolders
    ├───reddit_sub_funnycatswithdog
    │       reddit_sub_funnycatswithdog_983j331_cutecattries-to_eatdog.gif
    │
    ├───reddit_sub_funnydogs
    │       reddit_sub_funnydogs_fdsljdsd9s_kiotdawg_123.gif
    │
    ├───reddit_sub_imoutofrandomnames
    │       reddit_sub_imoutofrandomnames_92382j38du8yu_socute.gif
    │
    └───reddit_sub_randommemes
            reddit_sub_randommemes_023093x23_uploadedtitle.gif