2009-08-26 6 views
1

J'ai une version modifiée d'un fichier de configuration spécifique à ma machine. J'ai le même fichier de configuration dans plusieurs répertoires différents dans mon dossier de développement. Je veux, dans un seul fichier bat, remplacer toutes les instances de ce fichier avec mon édité.Commande DOS pour remplacer toutes les instances de <filename> .config

donc dans le code pusedo: Prenez C: \ edited.config et copier dans C: \ Projects \/s où se trouve original.config

Je veux que le fichier final d'avoir le nom de original.config , non edited.config

donc je devine que j'ai besoin d'une combinaison d'un FOR, un changement de nom et de copier ou quelque chose comme ça

est-ce plus facile à faire en Powershell?

Quelqu'un peut-il aider? Merci

Répondre

3

Je blogué sur ce regardera quelque chose de similaire à (ci-dessous est non testé, mais utilisé pour montrer idée générale)

for /f %%a IN ('dir /b *.config') do copy c:\master.config %%a 

il y a un peu à http://jamesewelch.com/2008/05/01/how-to-write-a-dos-batch-file-to-loop-through-files/

Je pense que votre solution Il y a probablement une basculer là sur la copie pour supprimer les avertissements d'écrasement de fichier, mais je ne me souviens pas de ce que le commutateur est. Cela copiera votre fichier master.config et écrasera votre fichier local (variable de %% a).

+0

l'option/y supprime les messages – shufler

1

Je suis étonné de ce que les experts de fichiers batch DOS font fonctionner. Comme je n'en fais pas partie, je prends une approche pragmatique pour moi. Cela pourrait fonctionner pour vous aussi.

  1. Obtenir une liste de dossiers de destination

    C: Cd \ Dir original.config/s> original.bat

  2. Modifier original.bat dans votre éditeur de texte favori (J'aime Notepad ++)

  3. Chercher "original.config" et remplacer par "" (chaîne vide)

  4. Insérez le texte "Xcopy C: \ edited.config" au début de chaque ligne

  5. Vérifiez le résultat pour vous assurer qu'il correspond à vos besoins. Si vous n'êtes pas sûr de mettre un "Echo" devant chaque ligne pour une course à sec.

  6. Exécutez le fichier de commandes.

+0

oui certains de ces gars-là la magie viennent avec est incroyable. – ryancrawcour

1
@echo off 
C: 
cd \Projects 
FOR /F "tokens=*" %%G IN ('DIR /B /S original.config') DO xcopy /y c:\edited.config %%G 
Questions connexes