文件夹c:\folder1
包含subfolder1
,subfolder2
等。
这些子目录包含.pdf
和.db
文件。
如何使用Windows命令解释器将所有.pdf
文件移动到c:\folder1
?
这对我有用:
for /r "c:\source_directory\" %%x in (*.pdf) do move "%%x" "c:\target_directory\"
此命令将使用Windows 7中的cmd递归地复制al pdf文件从源目录到目标目录 - 经过测试和工作。
希望能帮助到你。
外部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
并复制/粘贴其中一个结果以运行它并确认它按预期方式工作。然后移除回声并开始移动。
我不认为有一个通配符可用于子文件夹,所以你想使用循环遍历每个子文件夹并移动* .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)。遇到通配符时,命令提示符不会递归操作。
在Windows资源管理器中还有另一种方法(GUI,而不是命令提示符):
我知道这是高级的,但万一它可以帮助任何人。
用于搜索.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 on
for /r "F:\All_drawings\newdrg\" %%x in (*.tiff) do move "%%x" "F:\Alldrawings"
pause
{将所有文件从newdrg
文件夹及其“子文件夹”移动到目标文件夹Alldrawings
,此命令用于命令行的批处理文件操作,在两个地方使用单个“%”}。
只是在黑暗中采取狂野的刺,但如果我记得正确DOS可以处理globs和相当于mv
是MOVE
,所以:
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"
在move命令之后,您将拥有源文件夹,后跟文件将移动到的目标位置。每个文件扩展名前面的*是一个通配符函数,它将选择该目录中存在的所有指定文件类型。
此外,如果您愿意,可以使用这些命令创建.bat文件。为此,请将命令粘贴到记事本中,并将其另存为.bat而不是.txt
然后,您可以双击该文件,它将在每次执行时执行文件中的命令。如果您有任何需要这样的重复性任务,这将非常有用。