2017-10-18 10 views
1

...特に、私の親フォルダは「タイル」と呼ばれます。このフォルダ内には100個以上のサブフォルダがあり、各サブフォルダにはそれぞれ独自のサブフォルダが格納されています。例としては、次のようになります。単一のファイルを選択されたサブフォルダにコピー

タイル/ zzOrtho1 /テクスチャ
タイル/ zzOrtho1 /地形に
タイル/ zzOrtho1/NAVデータ
タイル/ zzOrtho2 /テクスチャ
タイル/ zzOrtho2 /地形
...など

Tilesの親ディレクトリに 'water.dds'というファイルがありますが、それを 'テクスチャ'と呼ばれるすべての 'サブサブフォルダ'にコピーしたいのですが、他のフォルダはありません。

このバッチスクリプト(このフォーラムで見つかった)タイルのフォルダに置かれたとき、タイル親フォルダ内のすべてのフォルダとサブフォルダにファイルwater.ddsがコピーされます:「

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

しかし、私の避難所ddsファイルが「テクスチャ」と呼ばれるすべての「サブ・サブフォルダ」にのみコピーされるように編集することができました。

これは、今では独自のサブフォルダ 'Tiles/water /'に含まれているddsファイルをTiles/Texturesフォルダにコピーしますが、これもまたどのように適応するのかわかりませんそれらのすべてのフォルダ構造内の1つの層より深い「テクスチャ」、およびコピー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

for/Rは現在のディレクトリをルートとして使用するため、代わりに明示的にルートディレクトリを指定するので、 ''%CD% ''部分は必要ありません。 Windowsはdir./fileのパス/名前を大文字と小文字を区別せずに扱うので、 'if'に'/I'を追加することを強くお勧めします。さらに、 'if/I" %%〜nxG "==" textures "'のような引用符を使用してスペースや他の文字が問題を起こさないようにします。最後に、ソースファイル 'water.dds'への完全なパスを提供する必要があると思います... – aschipfl

+0

ありがとう@aschipfl、編集中:)ファイルがバッチファイルが実行されるディレクトリにあるため、water.ddsファイルへのフルパスは必要ありません。 – Tecnogirl

+0

素晴らしい!現在の作業ディレクトリはバッチスクリプトの親ディレクトリと同じではないことに注意してください。 '%CD%'は現在の作業ディレクトリを指します。 '%〜dp0.'はパスファイルコンテナを指しています... – aschipfl

関連する問題