2012-02-20 79 views
2

所以情况是这样...是否可以通过cmd /批处理文件将目录中的文件复制到所有其他目录中的子目录中?

我有我的文件夹结构

- C:\ 
    - DirectoryA 
     - SubdirA 
      - File.xml  
    - DirectoryB  
     - SubdirB  
    - DirectoryC 
     - SubdirC 
    . 
    . 
    . 

我的问题是, 有没有办法从SubdirA将文件复制到其它目录中的所有子目录中,批处理/ cmd文件,没有大量的复制语句?

+0

请注意:我希望您的目标目录具有遵循特定模式的名称,或者目标的根目录与实际上系统驱动器的根目录不同。否则,你会冒目眩的系统目录(或任何其他不相关的目录)。 – 2012-02-22 09:39:27

回答

2

不好意思,关于这个问题有几点不清楚。

起初,我还以为你想“从SubdirA将文件复制到其它目录中的所有子目录” 在同一水平,该文件是,也就是说,如果SubdirB和/或SubdirC会有下面的子目录,该文件将不会被复制到它们;只是SubdirB和SubdirC。如果一个DirectoryD存在下面没有另一个子目录,那么该文件将不会被复制到它。下面的批处理文件做了这样的过程:

@echo off 
set "theFile=C:\DirectoryA\SubdirA\File.xml" 

for /F "tokens=2 delims=\" %%a in ("%theFile%") do set "originDir=%%a" 
cd \ 
for /d %%a in (*) do (
    if not "%%a" == "%originDir%" (
     pushd %%a 
     for /d %%b in (*) do (
     copy "%theFile%" "\%%a\%%b" 
    ) 
     popd 
    ) 
) 

但是,后来说:“这些目录都将处于同一水平,即正下方C:”违背自己的例子!这个例子中的目录有两层。

请注意,这一点(目标目录的级别)对于正确编写批处理文件(以防上述文件无法解决您的问题)至关重要。

+0

'cd/d drive:\'可能是更好的选择,因为您无法确定活动目录是否与目标根目录在同一个驱动器上。 – 2012-02-22 09:42:43

+0

对不起,我意识到我的问题可能措辞不佳。你的第一个解释实际上是我正在寻找的。 – Hammilldon 2012-02-22 09:47:15

0

在没有真正自己写批处理文件的情况下,你会想使用“for/d”来迭代目录,并将其放入一个可递归调用自身的循环中。

相关问题