2017-10-18 14 views
1

... spécifiquement, mon dossier parent s'appelle 'Tiles'. Dans ce dossier se trouvent une centaine de sous-dossiers ou plus, chacun contenant d'autres sous-dossiers. Des exemples seraient:Copie d'un seul fichier dans des sous-dossiers sélectionnés

Tiles/zzOrtho1/textures
Carreleurs/zzOrtho1/terrain
Tiles/zzOrtho1/données nav
Carreleurs/zzOrtho2/textures
Tiles/zzOrtho2/terrain
... et ainsi de suite

J'ai un fichier dans le répertoire parent de Tiles appelé 'water.dds' et je veux le copier dans chaque 'sous-sous-dossier' appelé 'textures', mais aucun autre dossier présent.

Ce script batch (qui se trouve sur ce forum), lorsqu'il est placé dans le dossier Tiles, copie le fichier water.dds à ​​chaque dossier et sous-dossier dans le dossier parent Tiles:

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

Mais je n » J'ai été capable de l'éditer pour que le fichier dds ne soit copié que dans tous les 'sous-sous-dossiers' appelés 'textures'. Alternativement, cela copie le fichier dds, maintenant contenu dans son propre sous-dossier 'Tiles/water /' dans un dossier Tiles/Textures, mais encore une fois, je ne vois pas comment l'adapter afin qu'il recherche les dossiers appelés 'textures une couche plus profonde dans la structure du dossier et des copies water.dds à ​​tous ..

for /D %%x in (textures.*) do copy "water" %%x 

quelqu'un peut-il bien vouloir aider?

Merci.

Répondre

0

Voilà comment vous le faites (courir à l'intérieur répertoire parent "Tiles")

@echo off 
for /D /r %%G in (*.*) do (
    if /I "%%~nxG"=="textures" copy "water.dds" "%%~G" > nul   
) 

%%~nxG vous donne le nom du dossier (la partie après la dernière /)

for /D /r %%G in (*.*) do (... 

Ce itère à travers tous les Sous-dossier

+0

Vous n'avez pas besoin de la partie '"% CD% "' car/R' utilise le répertoire courant en tant que racine (ou vous spécifiez explicitement le répertoire racine à la place). Je recommande fortement d'ajouter '/ I' à' if', car Windows traite les chemins/noms de répertoires/fichiers de manière insensible à la casse; en outre, utilisez des guillemets, comme 'if/I" %% ~ nxG "==" textures "', pour éviter que des espaces ou d'autres caractères ne causent des problèmes. Enfin, je pense que vous devez fournir le chemin complet vers le fichier source 'water.dds' ... – aschipfl

+0

Merci @aschipfl, édité :). Il n'a pas besoin du chemin d'accès complet au fichier water.dds car le fichier se trouve dans le répertoire où le fichier batch sera exécuté. – Tecnogirl

+0

Super! Gardez juste à l'esprit que le répertoire de travail actuel n'est pas le même que le répertoire parent du script batch; '% CD%' pointe vers le répertoire de travail actuel, où '% ~ dp0.' pointe vers le conteneur du fichier de chemin ... – aschipfl