2016-11-11 3 views
0

Ich habe eine Textdatei mit etwas Text drin, ich brauche diesen Text als Kopfzeile in allen Dateien, die sich in einem anderen Ordner befinden.Wie füge ich Text aus einer Datei als Kopfzeile in mehrere Dateien ein, die sich in einem separaten Ordner befinden?

Sagen wir Header.txt ist die Datei mit Text This is Heading und ich möchte diesen Text als Überschrift in jeder einzelnen Textdatei des Ordners C:\...\*.txt.

Zum Beispiel Body.txt ist eine der Dateien in verschiedenen Ordner mit Text als I am the body. Ich möchte den Text in Body.txt sein, wie:

This is Heading 
I am the body 

Antwort

1

Versuchen Sie, diese (Dateinamen und Pfade entsprechend anpassen):

for %%F in ("C:\...\*.txt") do (
    > "%%~F.tmp" type "Header.txt" 
    >> "%%~F.tmp" type "%%~F" 
    move /Y "%%~F.tmp" "%%~F" 
) 

Dieser Inhalt von Header.txt und dem verarbeiteten kombiniert Textdatei in einer temporären Datei (z. B. die Textdatei ist Body.txt, also die temporäre Datei ist Body.txt.tmp), dann verschiebt sie die Temproary-Datei über den ursprünglichen Text f ile, daher wird es ersetzt. Beachten Sie, dass die Überschrift in der Datei Header.txt mit einem Zeilenumbruch beendet werden muss; Andernfalls werden die Überschrift und die erste Zeile der Textdatei zu einer einzelnen Textzeile zusammengefasst.


Um die Dateien zu überprüfen, ob die bereits den Header eingefügt wurden, können Sie die ersten Zeilen in eine Variable umleiten und vergleichen sie mit der ersten Zeile der Header-Datei, wie folgt aus:

< "Header.txt" set /P HEAD="" 
for %%F in ("C:\...\*.txt") do (
    < "%%~F" set /P LINE="" 
    setlocal EnableDelayedExpansion 
    if not "!LINE!"=="!HEAD!" (
     endlocal 
     > "%%~F.tmp" type "Header.txt" 
     >> "%%~F.tmp" type "%%~F" 
     move /Y "%%~F.tmp" "%%~F" 
    ) else endlocal 
) 

Jede einzelne Datei wird hier einzeln geprüft. Dazu benötigen Sie delayed expansion, während Sie in einen Codeblock schreiben und von derselben Variablen lesen, also die for-Schleife.

+0

Vielen Dank ... es funktioniert ... :) Ich brauche eine zusätzliche Funktionalität auf diesem. Bitte helfen Sie mir darin. Sobald die Batch-Datei ausgeführt und Task erfolgreich abgeschlossen wurde, sollte wieder, wenn der Benutzer versucht, die gleiche Batch-Datei auszuführen, sollte es den Benutzer beim Hinzufügen von Text (ich meine Header) in Dateien und sollte durch eine Fehlermeldung wie "Header ist bereits in den Dateien enthalten. Führen Sie nicht die Batch-Datei". ..... Vielen Dank im Voraus ..... –

+0

Ich muss auch Fußzeile am Ende der Zeile hinzufügen. Footer Inhalt wird in einer separaten Datei sein. –

+0

Fügen Sie nach dem 'move' Befehl die Zeile' >> "%% ~ F" ein und tippen Sie "Footer.txt" '... – aschipfl

Verwandte Themen