我设法使它工作。我以这种形式附上代码版本,我还将提出一个带有单个 for 循环的版本。
如果有人想优化这个解决方案,它是免费的,我真的很鼓励。非常感谢你!
更新:我做了一个优化版本。感谢@Mofi
@echo off
setlocal EnableExtensions EnableDelayedExpansion
pushd "%~dp0"
set "filesInfolder=60"
set "foldersInfolders=15"
set "fcount=0"
set "fcounta=0"
set idx=0
set idxa=0
for /F "delims=" %%I in ('dir /a-d /o:n /b *.mp4') do (
REM echo Processing %%I
set /a idx=idx %% filesinfolder +1
if !idx! == 1 set /a fcount+=1
md Videos-!fcount! 2>nul
move "%%I" "Videos-!fcount!"
)
for /D %%A in (*.*) do (
REM echo Processing %%A
set /a idxa=idxa %% foldersinfolders +1
if !idxa! == 1 set /a fcounta+=1
md Canal-!fcounta! 2>nul
move "%%~fA" "Canal-!fcounta!"
)
endlocal
后期编辑:
现在目录按名称字母顺序排列。
Videos-1, Videos-10, Videos-11, ... Video-19
我需要它们以自然的字母数字顺序排列
我找到了一个临时解决方案,可以连续重命名我所有的内部文件夹,但最后我会在文件夹结构中解释如何对我来说更好。
我刚刚修改:
md Videos-!fcount! 2>nul
move "%%I" "Videos-!fcount!"
并做到了
md Videos-!fcount!-123 2>nul
move "%%I" "Videos-!fcount!-123"
我有文件MP4 文件文件夹
───MP4-files Folder
│ ├───file.mp4 - (1)
│ ├───file.mp4 - (10)
│ ├───file.mp4 - (11)
│ ├───file.mp4 - (2)
│ ├───file.mp4 - (3)
│ ├───file.mp4 - (4)
│ ├───file.mp4 - (5)
│ ├───file.mp4 - (6)
│ ├───file.mp4 - (7)
│ ├───file.mp4 - (8)
│ └───file.mp4 - (9)
在这里我运行上面的批处理文件(有那个小修改-123 )
并且所有 .mp4 文件首先在 Videos-1、Videos-2 ... Videos- xx 中移动,具体取决于我在文件夹中有多少 .mp4 文件。
每个视频文件夹中都有 mp4 文件(取决于我在脚本中写了多少)set "filesInfolder=60" 现在是,但可以不同。
之后,文件夹 Videos-1 .. Videos-xx 按顺序分组在名称为“Canal-1 .. Canal-10 .. Canal-x”的其他文件夹中。文件夹的数量取决于视频文件夹的数量。我组多少人在这里set "foldersInfolders=15"可以是15或其他数字。
我明白了:
─MP4-files Folder
│ ├───Canal-1 -> (set "foldersInfolders=15")
│ │ ├───Videos-1-123 (inside are the .mp4 files) -> set "filesInfolder=60"
│ │ ├───Videos-10-123
│ │ ├───Videos-100-123
│ │ ├───Videos-101-123
│ │ ├───Videos-102-123
│ │ ├───Videos-103-123
│ │ ├───Videos-104-123
│ │ ├───Videos-105-123
│ │ ├───Videos-106-123
│ │ ├───Videos-107-123
│ │ ├───Videos-108-123
│ │ ├───Videos-109-123
│ │ ├───Videos-11-123
│ │ ├───Videos-110-123
│ │ └───Videos-111-123
│ ├───Canal-2
│ │ ├───Videos-12-123
│ │ ├───Videos-13-123
│ │ ├───Videos-14-123
│ │ ├───Videos-15-123
│ │ ├───Videos-16-123
│ │ ├───Videos-17-123
│ │ ├───Videos-18-123
│ │ ├───Videos-19-123
│ │ ├───Videos-2-123
│ │ ├───Videos-20-123
│ │ ├───Videos-21-123
│ │ ├───Videos-22-123
│ │ ├───Videos-23-123
│ │ ├───Videos-24-123
│ │ └───Videos-25-123
│ ├───Canal-3
│ │ ├───Videos-26-123
│ │ ├───Videos-27-123
│ │ ├───Videos-28-123
│ │ ├───Videos-29-123
│ │ ├───Videos-3-123
│ │ ├───Videos-30-123
│ │ ├───Videos-31-123
│ │ ├───Videos-32-123
│ │ ├───Videos-33-123
│ │ ├───Videos-34-123
│ │ ├───Videos-35-123
│ │ ├───Videos-36-123
│ │ ├───Videos-37-123
│ │ ├───Videos-38-123
│ │ └───Videos-39-123
然后我运行以下批处理文件:
@Echo off
set Cnt=0
for /f "delims=" %%A in (
'dir /B /S /AD Videos-* ^| findstr /iV "^Videos-[0-9][0-9]*$" '
) Do Call :RenInc "%%A"
PopD
Goto :Eof
:RenInc
Set /A Cnt+=1
if Exist "Videos-%Cnt%" goto :RenInc
Ren "%~1" "Videos-%Cnt%"
我得到以下文件夹结构:
──Video-15-sec
│ ├───Canal-1
│ │ ├───Videos-1
│ │ ├───Videos-2
│ │ ├───Videos-3
│ │ ├───Videos-4
│ │ ├───Videos-5
│ │ ├───Videos-6
│ │ ├───Videos-7
│ │ ├───Videos-8
│ │ ├───Videos-9
│ │ ├───Videos-10
│ │ ├───Videos-11
│ │ ├───Videos-12
│ │ ├───Videos-13
│ │ ├───Videos-14
│ │ └───Videos-15
│ ├───Canal-2
│ │ ├───Videos-16
│ │ ├───Videos-17
│ │ ├───Videos-18
│ │ ├───Videos-19
│ │ ├───Videos-20
│ │ ├───Videos-21
│ │ ├───Videos-22
│ │ ├───Videos-23
│ │ ├───Videos-24
│ │ ├───Videos-25
│ │ ├───Videos-26
│ │ ├───Videos-27
│ │ ├───Videos-28
│ │ ├───Videos-29
│ │ └───Videos-30
│ ├───Canal-3
│ │ ├───Videos-31
│ │ ├───Videos-32
│ │ ├───Videos-33
│ │ ├───Videos-34
│ │ ├───Videos-35
│ │ ├───Videos-36
│ │ ├───Videos-37
│ │ ├───Videos-38
│ │ ├───Videos-39
│ │ ├───Videos-40
│ │ ├───Videos-41
│ │ ├───Videos-42
│ │ ├───Videos-43
│ │ ├───Videos-44
│ │ └───Videos-45
│ ├───Canal-4
这很好,但如果我在运行 1 次本答案中附加的第一个批处理文件后可以获得以下文件夹结构,对我来说更好。
──Video-15-sec
│ ├───Canal-1
│ │ ├───Videos-1
│ │ ├───Videos-2
│ │ ├───Videos-3
│ │ ├───Videos-4
│ │ ├───Videos-5
│ │ ├───Videos-6
│ │ ├───Videos-7
│ │ ├───Videos-8
│ │ ├───Videos-9
│ │ ├───Videos-10
│ │ ├───Videos-11
│ │ ├───Videos-12
│ │ ├───Videos-13
│ │ ├───Videos-14
│ │ └───Videos-15
│ ├───Canal-2
│ │ ├───Videos-1
│ │ ├───Videos-2
│ │ ├───Videos-3
│ │ ├───Videos-4
│ │ ├───Videos-5
│ │ ├───Videos-6
│ │ ├───Videos-7
│ │ ├───Videos-8
│ │ ├───Videos-9
│ │ ├───Videos-10
│ │ ├───Videos-11
│ │ ├───Videos-12
│ │ ├───Videos-13
│ │ ├───Videos-14
│ │ └───Videos-15
│ ├───Canal-3
│ │ ├───Videos-1
│ │ ├───Videos-2
│ │ ├───Videos-3
│ │ ├───Videos-4
│ │ ├───Videos-5
│ │ ├───Videos-6
│ │ ├───Videos-7
│ │ ├───Videos-8
│ │ ├───Videos-9
│ │ ├───Videos-10
│ │ ├───Videos-11
│ │ ├───Videos-12
│ │ ├───Videos-13
│ │ ├───Videos-14
│ │ └───Videos-15
│ ├───Canal-4
十分感谢