mih*_*hai 17 windows directory file-io cmd subdirectory
文件夹c:\folder1
包含subfolder1
,subfolder2
等等.
这些子目录包含.pdf
和.db
文件.
如何使用Windows命令解释器.pdf
将所有文件移动到c:\folder1
?
小智 21
这对我有用:
for /r "c:\source_directory\" %%x in (*.pdf) do move "%%x" "c:\target_directory\"
Run Code Online (Sandbox Code Playgroud)
此命令将使用Windows 7中的cmd递归地复制al pdf文件从源目录到目标目录 - 经过测试和工作.
希望能帮助到你.
小智 6
对于OP来说已经晚了两年,但由于这是我试图解决的问题,我认为我会为后人发布解决方案.外部for循环列出工作目录中的子目录,内部for循环列出要移动到目标路径的子目录.
for /d %f in (*.*) do for /d %e in (%f\*.*) do move "%e" DestinationPath
Run Code Online (Sandbox Code Playgroud)
如果DestinationPath不是工作目录的子文件夹,这将最有效,因为它将尝试将DestinationPath移动到自身.
要在批量运行之前确认命令,请开始只回显最终的移动命令,如下所示:
for /d %f in (*.*) do for /d %e in (%f\*.*) do echo move "%e" DestinationPath
Run Code Online (Sandbox Code Playgroud)
并复制/粘贴其中一个结果以运行它并确认它按预期方式工作.然后移除回声并开始移动.
在 Windows 资源管理器(GUI,而不是命令提示符)中还有另一种方法可以做到这一点:
我不认为有一个通配符可以用于子文件夹,所以你想使用循环遍历每个子文件夹并移动*.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).遇到通配符时,命令提示符不会递归操作.
小智 2
只是在黑暗中进行了一次疯狂的尝试,但如果我没记错的话,DOS 可以处理 glob 以及相当于mv
is的东西MOVE
,所以:
MOVE C:\FOLDER1\*\*.PDF C:\FOLDER1\