Mit Batch Datei auslesen, bestimmte Zeilen sowie Wörter löschen und in Datei sichern
Hallo Community,
ich habe versucht, mein Problem durch Google, DOS-Bücher und andere Möglichkeiten selbst zu lösen, aber ich scheitere trotzdem. Ich glaube, mein Anliegen ist etwas größer, was der Grund sein könnte, dass ich das Script nicht hinbekomme. Ich habe vom Kumpel eine Textdatei bekommen.
In ihr befinden sich verschiedene Nummern, hinter denen sich, durch einen Doppelpunkt getrennt, eine zweite Nummer befindet (quasi ZAHL:ZAHL), und Sätze, die durch "-" abgetrennt sind. Sie sind alle untereinander geschrieben und fortlaufend. Als Bespiel:
..
ZAHL:ZAHL
ZAHL:ZAHL
-
Satz
-
ZAHL:ZAHL
ZAHL:ZAHL
..
Die Batchdatei soll nun folgendes machen:
1. Die Textdatei einlesen
2. Die Zeilen löschen, die mit "-", "S" und "C" beginnen, sodass nur noch die Zahlen mit den Nummern übrig sind und sonst alles gelöscht ist
3. Die Nummern in eine neue Textdatei schreiben
4. Die Zahl hinter dem Doppelpunkt löschen, sodass nur noch die Zahl vor dem Doppelpunkt in der Textdatei steht. Hierbei soll die Batch die gleichen Zahlen, die hinter dem Doppelpunkt stehen in eigene Textdatei schreiben. Beispeil:
ZAHL:1 -> in 1.txt
ZAHL:2 -> in 2.txt
Das war's. Hoffentlich habt ihr ungefähr verstanden, was ich meine. Und das hätte ich wahrscheinlich nie alleine geschafft. Daher freue ich mich, wenn ihr mir hier helfen könntet!
MfG DizzoR
ich habe versucht, mein Problem durch Google, DOS-Bücher und andere Möglichkeiten selbst zu lösen, aber ich scheitere trotzdem. Ich glaube, mein Anliegen ist etwas größer, was der Grund sein könnte, dass ich das Script nicht hinbekomme. Ich habe vom Kumpel eine Textdatei bekommen.
In ihr befinden sich verschiedene Nummern, hinter denen sich, durch einen Doppelpunkt getrennt, eine zweite Nummer befindet (quasi ZAHL:ZAHL), und Sätze, die durch "-" abgetrennt sind. Sie sind alle untereinander geschrieben und fortlaufend. Als Bespiel:
..
ZAHL:ZAHL
ZAHL:ZAHL
-
Satz
-
ZAHL:ZAHL
ZAHL:ZAHL
..
Die Batchdatei soll nun folgendes machen:
1. Die Textdatei einlesen
2. Die Zeilen löschen, die mit "-", "S" und "C" beginnen, sodass nur noch die Zahlen mit den Nummern übrig sind und sonst alles gelöscht ist
3. Die Nummern in eine neue Textdatei schreiben
4. Die Zahl hinter dem Doppelpunkt löschen, sodass nur noch die Zahl vor dem Doppelpunkt in der Textdatei steht. Hierbei soll die Batch die gleichen Zahlen, die hinter dem Doppelpunkt stehen in eigene Textdatei schreiben. Beispeil:
ZAHL:1 -> in 1.txt
ZAHL:2 -> in 2.txt
Das war's. Hoffentlich habt ihr ungefähr verstanden, was ich meine. Und das hätte ich wahrscheinlich nie alleine geschafft. Daher freue ich mich, wenn ihr mir hier helfen könntet!
MfG DizzoR
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84740
Url: https://administrator.de/forum/mit-batch-datei-auslesen-bestimmte-zeilen-sowie-woerter-loeschen-und-in-datei-sichern-84740.html
Ausgedruckt am: 23.04.2025 um 15:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo DizzoR und willkommen im Forum!
Ob ich Dich richtig verstanden habe, wird sich zeigen, wenn Du folgendes direkt an der Kommandozeile eingibst:
Bitte beachten: Die neuen Textdateien werden im aktuellen Ordner erstellt (bzw ergänzt, falls sie bereits vorhanden sein sollten). Um sie in einen anderen Ordner zu schreiben, einfach dem "%j.txt" einen Pfad voranstellen, also etwa "D:\Anderer Ordner\%j.txt".
Grüße
bastla
[Edit] Nur als Ergänzung: In einem Batch müsstest Du jeweils die Prozentzeichen verdoppeln und daher %%i bzw %%j schreiben. [/Edit]
Ob ich Dich richtig verstanden habe, wird sich zeigen, wenn Du folgendes direkt an der Kommandozeile eingibst:
for /f "delims=:" %i in ('findstr /b /i /v "\- S C" "D:\Deine Textdatei.txt"') do echo %i>>"%j.txt"
Grüße
bastla
[Edit] Nur als Ergänzung: In einem Batch müsstest Du jeweils die Prozentzeichen verdoppeln und daher %%i bzw %%j schreiben. [/Edit]
Hallo DizzoR!
Freut mich, wenn's geklappt hat.
Eigentlich solltest Du für ein neues Thema auch einen neuen Thread eröfnnen, aber da ich nun schon mal dabei bin ...
Versuch es so:
Auch diese Zeile kannst Du direkt eingeben oder (mit %%i und %%j) als Batch verwenden.
Grüße
bastla
Freut mich, wenn's geklappt hat.
Eigentlich solltest Du für ein neues Thema auch einen neuen Thread eröfnnen, aber da ich nun schon mal dabei bin ...
Versuch es so:
for /f "tokens=1,2 delims=: " %i in ('findstr /n ^^^^ "D:\Deine andere Textdatei.txt"') do @echo\%j>>"D:\Deine neue Textdatei.txt"
Grüße
bastla
Hallo DizzoR!
Für diesen Zweck eignet sich VBScript besser - zB:
Verwendung: Entweder das Log-File per Drag & Drop auf die Scriptdatei oder per Kommandozeilenaufruf übergeben - falls zB das Script als "C:\Scripts\TrimLog.vbs" gespeichert ist:
In beiden Fällen wird die Originaldatei mit der zusätzlichen Extension ".bak" im selben Ordner abgelegt.
Grüße
bastla
Für diesen Zweck eignet sich VBScript besser - zB:
'TrimLog.vbs
Const Crit = "index.php"
Const Bak = ".bak"
CritLen = Len(Crit) - 1
Set fso = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count < 1 Then
WScript.Echo "Keine Logedatei angegeben!"
WScript.Quit 1
End If
LogFile = WScript.Arguments(0)
If Not fso.FileExists(LogFile) Then
WScript.Echo "Angegebene Logdatei " & LogFile & " nicht gefunden!"
WScript.Quit 2
End If
LogBak = LogFile & Bak
If fso.FileExists(LogBak) Then fso.DeleteFile LogBak
fso.MoveFile LogFile, LogBak
Set FileIn = fso.OpenTextFile(LogBak, 1)
Set FileOut = fso.OpenTextFile(LogFile, 2, True)
Do Until FileIn.AtEndOfStream
LineIn = FileIn.ReadLine
CritPos = InStr(1, LineIn, Crit, vbTextCompare)
If CritPos Then
LineOut = Left(LineIn, CritPos + CritLen)
Else
LineOut = LineIn
End If
FileOut.WriteLine LineOut
Loop
FileOut.Close
FileIn.Close
WScript.Echo "Done."
cscript //nologo "C:\Scripts\TrimLog.vbs" "D:\Log.txt"
Grüße
bastla