如何使用CMD将所有子目录中具有特定扩展名的文件移动到其父文件夹中?

文件夹c:\folder1包含subfolder1subfolder2等。

这些子目录保存.pdf.db文件。

如何使用Windows命令解释器将所有.pdf文件移动到c:\folder1

这对我有效

这个命令将使用Windows 7中的cmd递归地将al pdf文件从源文件复制到目标文件夹 – 经过测试和工作

for / r“c:\ source_directory \”%% x in(* .pdf)do move“%% x”“c:\ target_directory \”

希望能帮助到你

OP的两年太晚了,但是因为这是我想要解决的问题,所以我想我会为后人的缘故发布解决方案。 外部for循环列出工作目录中的子目录,inner for循环列出要移动到目标路径的子目录。

 for /d %f in (*.*) do for /d %e in (%f\*.*) do move "%e" DestinationPath 

如果DestinationPath不是工作目录的子文件夹,最好使用DestinationPath。

要在批量运行之前确认命令,只需回显最后一个命令就可以了:

 for /d %f in (*.*) do for /d %e in (%f\*.*) do echo move "%e" DestinationPath 

并复制/粘贴其中一个结果来运行它,并确认它按照预期的方式工作。 然后删除回声,并移动。

我不认为有一个通配符将在子文件夹上工作,所以你想要使用循环来通过每个子文件夹,并移动* .pdf;

FOR /R [your root folder path] %%G IN (*.pdf) DO move %%G [new path]

DO之后的命令本身就是在自己的引号中。 如果您预计源或目标中有空格,请使用双引号将其封装起来,例如:

FOR /R "source folder with spaces" %%G IN (*.pdf) DO move "%%G" "dest path with spaces"

请注意%% G左右的引号,这些是移动命令解析路径所必需的。

**编辑:为了响应接受的答案,分别从Windows XP和Windows 7上的命令提示:

命令提示符

这表明通配符在路径中不起作用,仅适用于单个目录中的文件(例如C:\ folder * .files)。 遇到通配符时,命令提示符不会递归运行。

只是在这里黑暗的野生刺伤,但如果我没有记错的DOS可以处理globs和相当于mvMOVE ,所以:

MOVE C:\FOLDER1\*\*.PDF C:\FOLDER1\

 MOVE "C:\FOLDER 1\PDF FILES\*.pdf" "C:\FOLDER 1" MOVE "C:\FOLDER 1\DB FILES\*.db" "C:\FOLDER 1" 

移动命令之后,您将获得源文件夹,然后是文件将移至的目标位置。 每个文件扩展名前面的*是一个通配符函数,它将选择该目录中存在的所有指定文件类型。

另外,如果你想用这些命令创建一个.bat文件。 要做到这一点,将你的命令粘贴到记事本中,并保存为.bat而不是.txt

然后,您可以双击该文件,每次执行文件时都会执行该命令。 如果您有任何需要重复的任务,这很有用。

我知道这是超级,但以防万一它帮助任何人。

使用它来搜索.MKV文件的所有子文件夹,并将它们移动到批处理文件所在的当前目录中。

 FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.mkv) DO ( move "%%X" "%CD%" ) popd ) 

Robocopy为我创造了奇迹:

  robocopy c:\cache c:\cache-2012 ?????-2012*.hash /S /MOV 

我用它来移动具有某些掩码的所有文件从c:\cache和其众多的子目录。

@echo上

for / r“F:\ All_drawings \ newdrg \”%% x in(* .tiff)do move“%% x”“F:\ Alldrawings”

暂停

{将所有文件从“newdrg”文件夹及其“子文件夹”移动到目标文件夹Alldrawings,该命令用于命令行使用单个“%”的批处理文件操作。