我需要一个可以从命令行运行的命令,为目录中的每个文件(基于文件名)创建一个文件夹,然后将文件移动到新创建的文件夹中。
例子 :
起始文件夹:
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\"