Batch file 从多个目录递归移动文件,但忽略一个目录?

Batch file 从多个目录递归移动文件,但忽略一个目录?,batch-file,recursion,directory,move,Batch File,Recursion,Directory,Move,使用此方案,如何从除一个文件夹(存档)之外的所有子文件夹中移动所有文件 在c:\folder中,我有一个名为“Archive”的文件夹,一堆随机命名的文件夹将从ftp服务器传入,其中包含txt文件。我需要递归地从这些随机生成的文件夹中提取所有内容,而不去处理归档文件夹。批次的当前代码行: for /r %l in (*) do (IF NOT "%l"=="*Archive*" move /y %l c:\folder) 导致 c:\folder>(IF NOT "c:\folder\A

使用此方案,如何从除一个文件夹(存档)之外的所有子文件夹中移动所有文件

在c:\folder中,我有一个名为“Archive”的文件夹,一堆随机命名的文件夹将从ftp服务器传入,其中包含txt文件。我需要递归地从这些随机生成的文件夹中提取所有内容,而不去处理归档文件夹。批次的当前代码行:

for /r %l in (*) do (IF NOT "%l"=="*Archive*" move /y %l c:\folder)
导致

c:\folder>(IF NOT "c:\folder\Archive\arctest.txt" == "*Archive*" move /y c:\folder\Archive\arctest.txt c:\folder )
1 file moved
我希望在所有其他子文件夹中的子文件移动时,此文件保持不变。

尝试以下操作:

for /r %a in (*) do @echo %~dpa|findstr /rvi "^.:\\[^\\]*\\archive\\$" >nul&& echo move /y "%~a" c:\folder
试试这个:

for /r %a in (*) do @echo %~dpa|findstr /rvi "^.:\\[^\\]*\\archive\\$" >nul&& echo move /y "%~a" c:\folder

Hi-Endro:这种简化也有效:
findstr/rvi“\\archive\\$”>nul&
Hi-endro:这种简化也有效:
findstr/rvi”\\archive\\\$”>nul&
在linux中,您可以做如下操作:
find-path ARCHIVE-prune-i{}-exec mv-f{}c:/folder
在linux中,您可以执行如下操作:
find-路径存档-prune-i{}-exec mv-f{}c:/folder