如何将文件递归复制到具有特定名称的所有文件夹中(首选批处理文件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将文件递归复制到具有特定名称的所有文件夹中(首选批处理文件)相关的知识,希望对你有一定的参考价值。

我想要做的是将NOMEDIA文件复制到所有名为EXTRAS的子文件夹以及所有子文件夹,但没有其他文件夹。

例如,这些是应该(不)复制NOMEDIA文件的地方:

**FALSE** ===>  F:Movies1234  
**TRUE** ====>  F:Movies1234Extras  
**TRUE** ====>  F:Movies1234Extras1  
**TRUE** ====>  F:Movies1234Extras2  
**FALSE** ===>  F:Movies5678  
**TRUE** ====>  F:Movies5678Extras  

此代码仅将NOMEDIA文件复制到EXTRAS文件夹中,但不会复制其子文件夹,并且还会在所有目录和子目录中创建名为“Extras”的新文件:

for /r "DRIVE:PATH" %i in (Extras.) do @copy "DRIVE:PATH.nomedia" "%i"

这会将NOMEDIA文件复制到所有目录和子目录中。

for /r "DRIVE:PATH" %i in (.) do @copy "DRIVE:PATH.nomedia" "%i"

非常感谢任何帮助,谢谢。

编辑:

这是从@Magoo's解决方案起作用的代码:

for /r "DRIVE:PATH" %i in (.) do echo "%i"|find /i "extras" >nul&if not errorlevel 1 copy "DRIVE:PATH.nomedia" "%i"

也感谢@Aacini@aschipfl的帮助! :-)

答案
.... do echo "%i"|find /i "extras" >nul&if not errorlevel 1 copy....

这回应了发现在find中的每个路径名,extras试图在/i不区分大小写的模式中找到字符串find>nul的输出受到find的抑制。如果发现字符串,errorlevel会将0设置为1,否则就会设置if errorlevel,这样你就可以使用原始的errorlevel语法(如果qazxswpoi是n或大于n,则“if errorlevel n”将为真)并且不使用检测errorlevel = 0(即找到字符串)。

以上是关于如何将文件递归复制到具有特定名称的所有文件夹中(首选批处理文件)的主要内容,如果未能解决你的问题,请参考以下文章

将具有特定名称的文件复制到相应的目录

如何使用 PowerShell 递归删除具有特定名称的文件夹?

将具有特定(相同)名称的子文件夹复制到目标

如何获取具有特定驱动器名称的驱动器的驱动器号? [关闭]

NANT 复制所有具有相似名称的文件

如何将音频文件复制到另一个文件