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

时间:2010-12-05 03:38:34

标签: windows file-io cmd directory subdirectory

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

这些子目录包含.pdf.db个文件。

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

11 个答案:

答案 0 :(得分:21)

这对我有用:

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

此命令将递归复制al pdf文件从源目录到目标目录 在Windows 7中使用cmd - 经过测试和工作。

希望它有所帮助。

答案 1 :(得分:6)

对于OP来说已经晚了两年,但由于这是我试图解决的问题,我认为我会为后人发布解决方案。外部for循环列出工作目录中的子目录,内部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

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

答案 2 :(得分:5)

我认为没有可用于子文件夹的通配符,因此您希望使用循环遍历每个子文件夹并移动* .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上的命令提示符:

command prompts

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

答案 3 :(得分:3)

我知道这是高级的,但万一它可以帮助任何人。

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

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

答案 4 :(得分:3)

在Windows资源管理器中还有另一种方法(GUI,而不是命令提示符):

  • 导航到顶级目录
  • 在右上角的搜索框中,输入* .pdf并点击搜索
  • 选择所有文件并将其拖至顶级文件夹
  • 回应有关覆盖文件的任何提示

答案 5 :(得分:2)

Robocopy给我带来了奇迹:

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

我用它来移动c:\cache及其众多子目录中带有特定掩码的所有文件。

答案 6 :(得分:2)

@echo on

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

pause

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

答案 7 :(得分:1)

这里只是在黑暗中采取疯狂刺,但如果我没记错,DOS可以处理整数,mv的等价物是MOVE,所以:

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

答案 8 :(得分:1)

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

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

此外,如果您愿意,可以使用这些命令创建.bat文件。为此,请将您的命令粘贴到记事本中并将其另存为 .bat ,而不是 .txt

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

答案 9 :(得分:1)

要将所有文本文件复制到一个文件夹并保留目录结构:

xcopy *.txt /s D:文件夹

答案 10 :(得分:0)

在位置c:/folder1上打开CMD

运行以下命令:

mv ./subfolder1/*.pdf .
mv ./subfolder2/*.pdf .

./subfolder1/*.pdf./subfolder1/中选择所有(*)pdf文件的地方

mv命令将它们全部移到相对路径.,这是当前目录c:/folder1

代替相对路径(例如./subfolder1/./subfolder2/.),您还可以键入完整或绝对路径,例如c:/folder1/subfolder1/c:/folder1/subfolder2/和{ {1}}