CMD 命令为每个文件创建文件夹并将文件移动到文件夹中

CMD 命令为每个文件创建文件夹并将文件移动到文件夹中

我需要一个可以从命令行运行的命令,为目录中的每个文件(基于文件名)创建一个文件夹,然后将文件移动到新创建的文件夹中。

例子 :

起始文件夹:

Dog.jpg
Cat.jpg

以下命令非常适合为当前工作目录中的每个文件名创建一个文件夹。

for %i in (*) do md "%~ni"

结果文件夹:

\Dog\
\Cat\
Dog.jpg
Cat.jpg

我需要更进一步将文件移动到文件夹中。

我想要实现的目标是:

\Dog\Dog.jpg
\Cat\Cat.jpg

有人可以帮我用一个命令完成所有这些操作吗?

答案1

第二条命令是

for %i in (*) do move "%i" "%~ni"

编辑:根据 and31415 的评论,为 %i 添加了“”。谢谢。

答案2

只需连续执行以下命令:

为每个文件创建文件夹:

for %i in (*) do mkdir "%~ni"

将每个文件移动到其文件夹:

for %i in (*) do move "%i" "%~ni"

答案3

如果你有一些文件夹,例如:例如 years\Filename.mp4,那么这个就可以了

1901\Filename.mp4 
1902\Filename.mp4
1903\Filename.mp4

它将列出所有文件夹第一级文件;列出所有 *.mp4 和 *.mkv 将创建具有文件名的两级文件夹,并将第一级文件夹中所有同名文件移动到第二级文件夹,在多年的基础文件夹中运行它。

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\"

相关内容