使用批处理在循环中移动多个扩展名的文件

时间:2017-05-16 10:03:08

标签: batch-file cmd

我想要一些特定扩展名的文件移动到目标目录。这是我的批处理文件的一部分:

move "%filepath%\*.txt" "%~dp0"
move "%filepath%\*.docx" "%~dp0"
move "%filepath%\*.pdf" "%~dp0"
move "%filepath%\*.jpg" "%~dp0"
move "%filepath%\*.png" "%~dp0"

上面的代码工作正常。但我想在一个循环中这样做。我想尝试以下内容:

set f_ext=*.txt *.docx *.pdf *.jpg *.png
for %%f in (%f_ext%) do (
    move "%filepath%\%%f" "%~dp0"
)

上述代码仅在目标文件夹(%~dp0)中已存在相同名称的文件时才有效,但不起作用。

那么如何使用不需要文件名的批处理在循环中移动某些扩展的文件?

1 个答案:

答案 0 :(得分:2)

问题是for中的通配符使其迭代当前活动目录中的文件

set f_ext=.txt .docx .pdf .jpg .png
for %%f in (%f_ext%) do (
    move "%filepath%\*%%f" "%~dp0"
)

for中的通配符(从扩展集中删除)更改为move命令。