2009-08-26 4 views
1

Ich habe eine bearbeitete Version einer Konfigurationsdatei für meine Maschine. Ich habe die gleiche Konfigurationsdatei in mehreren verschiedenen Verzeichnissen in meinem Entwicklungsordner. Ich möchte in einer einzigen Datei alle Instanzen dieser Datei durch meine bearbeitete Datei ersetzen.DOS-Befehl zum Ersetzen aller Instanzen von <filename> .config

So in pusedo Code: Nehmen Sie C: \ edited.config und kopieren in C: \ Projects \/s überall dort, wo original.config gefunden

i die letzte Datei den Namen original.config haben wollen , nicht

edited.config so vermute ich bin ich eine Kombination aus einer FOR benötigen, eine Umbenennungs und kopieren oder so ähnlich

ist dies leichter in Powershell zu tun?

kann jemand helfen? Dank

Antwort

3

ich darüber gebloggt ein wenig vor bei http://jamesewelch.com/2008/05/01/how-to-write-a-dos-batch-file-to-loop-through-files/

Ich denke, Ihre Lösung ähnlich etwas aussehen wird (unter ungetestet ist, aber verwendet, um allgemeine Idee zu zeigen)

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

Es ist wahrscheinlich ein Schalten Sie dort auf der Kopie, um Dateiüberschreibungen Warnungen zu unterdrücken, aber ich erinnere mich nicht, was der Schalter ist. Dies kopiert Ihre master.config und überschreibt Ihre lokale Datei (Variable von %% a).

+0

die Option/y unterdrückt Eingabeaufforderungen – shufler

1

Ich bin erstaunt, was DOS-Batch-Datei-Experten arbeiten. Da ich keiner von ihnen bin, nehme ich einen Ansatz, der für mich pragmatisch ist. Es könnte auch für Sie funktionieren.

  1. Hier finden Sie eine Liste der Zielordner

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

  2. bearbeiten original.bat in Ihrem bevorzugten Texteditor (Ich mag Notepad ++)

  3. Suche nach "original.config" und ersetzen mit "" (leere Zeichenkette)

  4. Fügen Sie den Text "Xcopy C: \ edited.config" an der Vorderseite jeder Zeile ein

  5. Lesen Sie das Ergebnis, um sicher zu sein, dass es das ist, was Sie wollen. Wenn Sie nicht sicher sind, legen Sie vor jeder Zeile ein "Echo" für einen Trockenlauf.

  6. Die Stapeldatei ausführen.

+0

ja einige der wizardry diese Jungs kommen mit erstaunlich. – ryancrawcour

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