Answers:
第二个命令是
for %i in (*) do move "%i" "%~ni"
编辑:根据and31415的注释,为%i添加了“”。tnx。
for %i in (*) do move "%~i" "%~ni"
即使这样可能还不够好,因为当目标文件夹不存在时它可能会产生副作用(例如,文件被“移动”到自己上方,因此被重命名)。一个简单的解决方案是将这两个命令组合在一起,如下所示:for %i in (*) do md "%~ni" && move "%~i" "%~ni"
该命令假定目录不存在。
cmda && cmdb
那么cmdb
只有将执行cmda
成功。如果要使用它cmda & cmdb
,则无论如何都会执行第二个命令。实际上,单个&号&
只是命令分隔符,而双&号&&
是有条件的。未设置errorlevel
值的命令不应与后者一起使用。
只需依次执行以下命令:
为每个文件创建文件夹:
for %i in (*) do mkdir "%~ni"
要将每个文件移动到其文件夹:
for %i in (*) do move "%i" "%~ni"
如果您有一些文件夹,例如:Years \ Filename.mp4,它将执行此操作。
1901\Filename.mp4
1902\Filename.mp4
1903\Filename.mp4
它将列出所有文件夹一级文件;列出所有* .mp4和* .mkv将创建具有文件名的2级文件夹,并将所有相同名称的文件从1级文件夹移至2级文件夹,并在Years基本文件夹中运行。
for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"
如果没有一级YEARS文件夹,则可以绕过第一步,然后运行第二步,在文件名基本文件夹中运行它。
for %i in (*.mp4,*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"
&&将确保先前的mkdir%ERRORLEVEL%为0以运行文件移动
要测试,请使用以下命令:
for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do echo "%~dpi%~ni" && echo "%~dpi%~ni.*" "%~dpi%~ni\"
for %i in (*) do cmda && cmdb
-B)可以先回显for %i in (*) do @ECHO cmda && cmdb
C)可以添加我认为是/ R可以通过子目录。