Movin *.doc、*.pdf 等的递归批处理文件



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

@echo off
move /y "*.xml" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultxml"
move /y "*.pdf" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultdocumentos"
move /y "*.cat" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultcat"
move /y "*.dll" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultdll"

看看这个:

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

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

@echo off
SETLOCAL
for /D /R %%a in (*) do (
pushd "%%a"
move /y "*.xml" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultxml"
move /y "*.pdf" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultdocumentos"
move /y "*.cat" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultcat"
move /y "*.dll" "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan resultdll"
popd
)

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

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

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

但要小心 - 请记住,如果多次找到任何文件x.ext,则将移动具有该名称的最后一个文件,替换任何其他文件。

也许

xcopy /s *.xml "D:backUP_arquiRecovered data 03-10 20_23_41Deep Scan result"

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

最新更新