2017-10-18 146 views
1

...特別是,我的父文件夾被稱爲「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 

誰能好心幫?

謝謝。

回答

0

這裏是你如何做到這一點(父目錄中運行「磚」)

@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

相關問題