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

Windows movin*.doc、*.pdf等的递归批处理文件,windows,batch-file,filesystems,move,xcopy,Windows,Batch File,Filesystems,Move,Xcopy,我从安装了Windows7的硬盘上恢复了这些文件 现在我的文件夹乱七八糟,有成千上万的文件和文件夹,我真的不太了解批处理编码,但通过观看一些youtube视频,我可以进入下面的下一个,但批处理文件只查找我执行批处理的当前文件夹中的文件,我希望它查找该文件夹中的文件夹,等等。。 对不起,我英语不好 @echo off move /y "*.xml" "D:\backUP_arqui\Recovered data 03-10 20_23_41\Deep Scan result\xml" move

我从安装了Windows7的硬盘上恢复了这些文件 现在我的文件夹乱七八糟,有成千上万的文件和文件夹,我真的不太了解批处理编码,但通过观看一些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"
看看这个:

@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_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
指令将与掩码
*
匹配的每个目录名依次分配给
%%a
pushd
临时将默认目录设置为该名称,执行
move
指令,并且
popd
恢复原始目录

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

或许

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

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

您也可以编写该指令以自动为每个文件扩展名创建目录,但这是非常危险的:)