Batch Zweite Zeile einer txt Datei ersetzen

Zephry

Cadet 2nd Year
Registriert
Apr. 2017
Beiträge
22
Hallo zusammen,

habe im Internet schon gesucht, jedoch nichts gefunden...

ich möchte eine Batch Datei, die aus "Test.txt" die zweite Zeile ( egal was diese beinhaltet ) durch "Text" ersetzt wird.

Hat jemand eine Ahnung wie ich das machen soll?

Schon mal vielen Dank für die Antworten!
 
Ähm, ich weiss ehrlich gesagt nicht was den Problem ist. Kannst du das Problem nochmal ausführlicher oder anders schildern?
 
Code:
$ perl  -i -lpe '$_="Text" if 2 .. 2' Test.txt
 
Ok, ich habe eine Textdatei namens "Test.txt".

In dieser ist ein beliebiger Inhalt.

Nun möchte ich ein Batch Programm schreiben, das mir die zweite Zeile in der Datei "Test.txt" durch "Text" ersetzt.

Beispiel:

In meiner Textdatei ist volgender Inhalt:

Code:
Dies
ist
ein
Inhalt

Nun möchte ich aber in der zweiten Zeile nur das Wort "Text" haben, also so:

Code:
Dies
Text
ein
Inhalt

( schlechtes Beispiel )

Ich habe nur keine Ahnung, was in der Zweiten Zeile meiner Textdatei steht.
Das Programm kann ich jedoch nicht ohne Hilfe schreiben, deshalb bitte ich euch mir zu helfen.
 
Zephry schrieb:
Nun möchte ich ein Batch Programm schreiben, das mir die zweite Zeile in der Datei "Test.txt" durch "Text" ersetzt.
Das Programm kann ich jedoch nicht ohne Hilfe schreiben, deshalb bitte ich euch mir zu helfen.
Der Witz ist, Du brauchst dazu gar kein "Programm". Du brauchst nur auf dem Rechner ein entsprechendes Tool installiert, z.B. Perl (Eine Computersprache so ähnlich wie Batch), oder eben Unix-Tools wie z. B. sed (Stream-Editor). Das Microsoft-CMD-Batch dafür zu nehmen ist eher ungünstig, da die genannten Tools (insbesondere Perl) so was "ohne zusätzliches Programm" können. Falls Du Windows 10 hast, kannst Du das Windows Subsystem für Linux aktivieren (bei Apps & Programme aktivieren, dann über Store laden) und hast sowohl Perl als auch sed. Ansonsten installierst Du Dir GitBash, welches glaube ich auch ein Perl enthält. Die Lösung wäre dann (mit GitBash):
  • Rechtsclick auf Verzeichnis, welches Textdatei enthält
  • Im lokalen Menü "Bash here" starten
  • in der aufgehenden Konsole eingeben: perl -i -lpe 's/.*/Text/ if 2..2' Test.txt
    wenn Deine Datei "Test.txt" heisst
  • fertig.
 
Das währe eine Möglichkeit, jedoch muss das auf mehreren Computern mit Windows 7 laufen ( teils auch auf Robotern mir win7 ), bei denen ich kein zusätzliches Programm installieren kann / darf. Deswegen war mein erster Gedanke Batch, denn das läuft auf jeden Windows Rechner...
 
Zephry schrieb:
muss das auf mehreren Computern mit Windows 7 laufen ( teils auch auf Robotern mir win7 ), bei denen ich kein zusätzliches Programm installieren kann /
Ach so.
Code:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set zeile=2
set newtext=Text Text

set anzahl=0
for /f "delims=" %%1 in ('type test.txt') do (
   set /a anzahl+=1 
   if "!anzahl!" equ "%zeile%" ( 
       echo %newtext%
    )  else ( 
       echo %%1% 
    )
 )
Bei Zeile 7 mußt Du den Dateinamen eintragen.
 
Zurück
Oben