将单个文件复制到选定的子文件夹

问题描述:

...特别是,我的父文件夹被称为“Tiles”。在此文件夹中有一百个或更多子文件夹,每个子文件夹都包含其他子文件夹。例子是:将单个文件复制到选定的子文件夹

瓷砖/ zzOrtho1 /纹理
瓷砖/ zzOrtho1 /地形
瓷砖/ zzOrtho1/NAV数据
瓷砖/ zzOrtho2 /纹理
瓷砖/ zzOrtho2 /地形
...等等

我在Tiles父目录中有一个名为'water.dds'的文件,我想将它复制到名为'textures'的每个'sub-subfolder',但没有其他文件夹存在。

此批处理脚本(在这个论坛上找到),放置在瓷砖文件夹时,会将文件water.dds复制到瓷砖父文件夹中的每个文件夹和子:

@echo off 
    for /r "%CD%" %%f in (.) do (
     copy "water.dds" "%%~ff" > nul 
    ) 

但还没我们无法编辑它,因此只能将dds文件复制到名为“纹理”的所有“子子文件夹”中。

或者,此操作会将现在包含在其自己的子文件夹'Tiles/water /'中的dds文件复制到Tiles/Textures文件夹,但是我再也看不到如何修改此文件, “纹理”一个层中的文件夹结构较深,并复制water.dds到所有的人..

for /D %%x in (textures.*) do copy "water" %%x 

谁能好心帮?

谢谢。

这里是你如何做到这一点(父目录中运行“砖”)

@echo off 
for /D /r %%G in (*.*) do (
    if /I "%%~nxG"=="textures" copy "water.dds" "%%~G" > nul   
) 

%%~nxG给你的文件夹名称(在最后的部分/)

for /D /r %%G in (*.*) do (... 

通过每一个这种迭代子文件夹

+0

因为无论如何(或者您明确地指定根目录),您不需要''%CD%“'部分作为for/R'使用当前目录作为根目录。我强烈建议将'/ I'添加到'if',因为Windows不区分大小写地处理dir./file路径/名称;此外,请使用引号,例如'if/I“%%〜nxG”==“纹理”',以避免空格或其他字符造成麻烦。最后,我认为你必须提供源文件'water.dds'的完整路径... – aschipfl

+0

感谢@aschipfl,编辑:)。它不需要water.dds文件的完整路径,因为该文件位于批处理文件将运行的目录中。 – Tecnogirl

+0

太棒了!请记住,当前工作目录与批处理脚本的父目录不同; '%CD%'指向当前工作目录,其中'%〜dp0.'指向路径文件容器... – aschipfl