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

Batch file 将单个文件复制到选定的子文件夹,batch-file,copy,Batch File,Copy,。。。具体来说,我的父文件夹称为“Tiles”。在这个文件夹中有一百个或更多的子文件夹,每个子文件夹都包含自己的子文件夹。例如: 瓷砖/ZZ1/纹理 瓷砖/ZZ1/地形 平铺/ZZ1/nav数据 瓷砖/ZZ2/纹理 瓷砖/ZZ2/地形 ... 诸如此类 我在Tiles父目录中有一个名为“water.dds”的文件,我想将其复制到每个名为“textures”的“子文件夹”,但不存在其他文件夹 此批处理脚本(在此论坛上找到)放置在Tiles文件夹中时,将文件water.dds复制到Tiles父文件夹

。。。具体来说,我的父文件夹称为“Tiles”。在这个文件夹中有一百个或更多的子文件夹,每个子文件夹都包含自己的子文件夹。例如:

瓷砖/ZZ1/纹理
瓷砖/ZZ1/地形
平铺/ZZ1/nav数据
瓷砖/ZZ2/纹理
瓷砖/ZZ2/地形
... 诸如此类

我在Tiles父目录中有一个名为“water.dds”的文件,我想将其复制到每个名为“textures”的“子文件夹”,但不存在其他文件夹

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

 @echo off
    for /r "%CD%" %%f in (.) do (
      copy "water.dds" "%%~ff" > nul
    )
但我无法编辑它,因此dds文件只能复制到所有名为“纹理”的“子文件夹”中

或者,这会将dds文件(现在包含在其自己的子文件夹“Tiles/water/”中)复制到一个文件夹Tiles/Textures中,但我同样看不到如何调整此文件,以便它在文件夹结构的更深一层查找名为“Textures”的文件夹,并将water.dds复制到所有文件夹中

for /D %%x in (textures.*) do copy "water" %%x
有人能帮忙吗

谢谢。

以下是您的操作方法(在父目录“Tiles”中运行)

%%~nxG
为您提供文件夹名称(最后一个/后面的部分)

这将遍历每个子文件夹

以下是您的操作方法(在父目录“Tiles”中运行)

%%~nxG
为您提供文件夹名称(最后一个/后面的部分)


这将遍历每个子文件夹

您不需要
%CD%”
部分,因为/R的
使用当前目录作为根目录(或者您明确指定根目录)。我强烈建议将
/I
添加到
if
,因为Windows对dir./文件路径/名称大小写不敏感;此外,请使用引号,如
if/I“%%~nxG”==“textures”
,以避免空格或其他字符引起麻烦。最后,我认为您必须提供源文件
water.dds
的完整路径……谢谢@aschipfl,编辑:)。它不需要water.dds文件的完整路径,因为该文件位于批处理文件将运行的目录中。太棒了!请记住,当前工作目录与批处理脚本的父目录不同
%CD%
指向当前工作目录,其中
%~dp0.
指向路径文件容器…非常感谢你们两位,这很好!非常感谢-恐怕我的技能不太符合您的水平。您不需要
%CD%”
部分,因为
for/R
使用当前目录作为根目录(或者您明确指定根目录)。我强烈建议将
/I
添加到
if
,因为Windows对dir./文件路径/名称大小写不敏感;此外,请使用引号,如
if/I“%%~nxG”==“textures”
,以避免空格或其他字符引起麻烦。最后,我认为您必须提供源文件
water.dds
的完整路径……谢谢@aschipfl,编辑:)。它不需要water.dds文件的完整路径,因为该文件位于批处理文件将运行的目录中。太棒了!请记住,当前工作目录与批处理脚本的父目录不同
%CD%
指向当前工作目录,其中
%~dp0.
指向路径文件容器…非常感谢你们两位,这很好!非常感谢-我恐怕我的技能没有达到你的水平。
@echo off
for /D /r %%G in (*.*) do (
    if /I "%%~nxG"=="textures" copy "water.dds" "%%~G" > nul        
)
for /D /r %%G in (*.*) do ( ...