movin * .doc,* .pdf等的递归批处理文件

时间:2017-03-29 05:54:18

标签: windows batch-file filesystems move xcopy

我从安装了Windows 7的硬盘恢复了文件 现在我在一个文件夹中乱七八糟,有成千上万的文件和文件夹,我真的不太了解批量编码,但通过观看一些youtube视频,我可以到下面的下一个,但该批处理文件只查找我执行批处理的当前文件夹中的文件,我希望它在该文件夹内的文件夹中查找等等。 抱歉我的英文不好

@echo off

move /y "*.xml" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\xml"

move /y "*.pdf" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\documentos"

move /y "*.cat" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\cat"

move /y "*.dll" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\dll"

2 个答案:

答案 0 :(得分:0)

看看这个:

@echo off
for /R %temp% %%f in (*.*) do (
echo %%f )

在那里你可以看到带参数" / R"的for循环。 " / R"使循环递归以查看子文件夹。

答案 1 :(得分:-1)

@echo off
SETLOCAL
for /D /R %%a in (*) do (
 pushd "%%a"
 move /y "*.xml" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\xml"
 move /y "*.pdf" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\documentos"
 move /y "*.cat" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\cat"
 move /y "*.dll" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\dll"
popd
)

这应该在源的所有目录中执行一系列命令。

SETLOCAL是可选的 - 它确保在bathc结束时丢弃对环境的任何更改。在这种情况下没有,但无论如何都是常见的做法。

for /d指令将与掩码*匹配的每个目录名依次分配给%%apushd临时将默认目录设置为该名称,执行move指令,popd恢复原始目录。

请注意 - 请记住,如果发现任何文件x.ext不止一次,则会移动最后一个具有该名称的文件,替换其他文件。

也许

xcopy /s *.xml "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\"

可能有所帮助。它会将所有.xml文件从源复制到目标,在源目录下存在的目标目录下构建相同的目录结构。这样,如果有重复的名称,您将拥有原始文件的副本。显然,您需要重复所需的每种文件类型的指令。