2012-02-20 76 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」來迭代目錄,並將其放入一個可遞歸調用自身的循環中。

相關問題