Ein Zeichen in einer SEHR großen TXT Datei ersetzen
Moin,
folgendes Problem:
In einer recht großen textdatei (150000 Zeilen x 300 Zeichen) muß ein ";" gegen ein "|" ausgetauscht werden. Ich hab schon mehrere Texteditoren probiert, die alle streiken. Excel geht auch nicht, weil hier der Trenner "|" nicht explizit verwendet werden kann.
Meine Frage: Wie kann ich diese Aufgabe per Batch lösen ?
Danke vorab,
schöne grüße Wolfgang
folgendes Problem:
In einer recht großen textdatei (150000 Zeilen x 300 Zeichen) muß ein ";" gegen ein "|" ausgetauscht werden. Ich hab schon mehrere Texteditoren probiert, die alle streiken. Excel geht auch nicht, weil hier der Trenner "|" nicht explizit verwendet werden kann.
Meine Frage: Wie kann ich diese Aufgabe per Batch lösen ?
Danke vorab,
schöne grüße Wolfgang
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184313
Url: https://administrator.de/contentid/184313
Ausgedruckt am: 26.11.2024 um 02:11 Uhr
13 Kommentare
Neuester Kommentar
hi,
da streiken viele Programme, excel hätte ich gar nicht erst probiert.
Ich habe das mal gelöst, indem man die Zeilen in eine Datenbank einliest und die Felder wie der mit "" exportiert.
Ist etwas Arbeit, aber wenn es nicht zu viele Felder sind benötigst Du weniger zeit als mit dem Rumprobieren div. Programme.
gruss jo
da streiken viele Programme, excel hätte ich gar nicht erst probiert.
Ich habe das mal gelöst, indem man die Zeilen in eine Datenbank einliest und die Felder wie der mit "" exportiert.
Ist etwas Arbeit, aber wenn es nicht zu viele Felder sind benötigst Du weniger zeit als mit dem Rumprobieren div. Programme.
gruss jo
Dann hast du offenbar nicht die richtigen Editoren ausprobiert.
Versuch mal EditPad(-lite).
Gruß
moin Wolfgang,
als Batch in etwa so:
[Edit]
ein sekündchen zu spät ...
[/Edit]
Gruß Phil
als Batch in etwa so:
@echo off
setlocal disabledelayedexpansion
if "%~1" == "" echo Syntaxfehler. Datei angeben!&goto :eof
if not exist "%~1" echo Datei nicht gefunden!&goto :eof
findstr /n "^" "%~1" > "%~1.LN"
(
for /f "usebackq tokens=*" %%i in ("%~1.LN") do (
set "Zeile=%%i"
setlocal enabledelayedexpansion
set "Zeile=!Zeile:;=|!"
echo\!Zeile:*:=!
endlocal
)
)>"%~1-Neu.TXT"
del "%~1.LN"
[Edit]
ein sekündchen zu spät ...
[/Edit]
Gruß Phil
Hallo moebelwachs!
Um die gesammelten Werke zu komplettieren als weitere Alternative mit Bordmitteln die VBS-Variante dazu:
Grüße
bastla
Um die gesammelten Werke zu komplettieren als weitere Alternative mit Bordmitteln die VBS-Variante dazu:
Ein = "D:\Datei_alt.txt"
Aus = "D:\Datei_neu.txt"
Von = ";"
Nach = "|"
Set fso = CreateObject("Scripting.FileSystemObject")
Set E = fso.OpenTextFile(Ein)
Set A = fso.CreateTextFile(Aus)
Do While Not E.AtEndOfStream
A.WriteLine Replace(E.ReadLine, Von, Nach)
Loop
bastla
Hallo Frank,
das soll ja hier nicht die Aufgabe sein, eine so große Datei auf den Bildschirm darzustellen.
Word muss ja erst alles Durchnudeln und im Speicher halten. Etwa 3 mal Dateigröße ...
So ein Script frag auch nicht erst nach der Codierung.
Beim Ersetzen mit den Scripten werden die Dateien geöffnet, gelesen und geschlossen (Beim Batch zum Beispiel jedesmal je Zeile)
Die Ergebnisse werden in eine Neue Datei geschrieben.
Ein Abarbeiten Zeile für Zeile ist so im Endeffekt viel effektiver.
Gruß Phil
das soll ja hier nicht die Aufgabe sein, eine so große Datei auf den Bildschirm darzustellen.
Word muss ja erst alles Durchnudeln und im Speicher halten. Etwa 3 mal Dateigröße ...
So ein Script frag auch nicht erst nach der Codierung.
Beim Ersetzen mit den Scripten werden die Dateien geöffnet, gelesen und geschlossen (Beim Batch zum Beispiel jedesmal je Zeile)
Die Ergebnisse werden in eine Neue Datei geschrieben.
Ein Abarbeiten Zeile für Zeile ist so im Endeffekt viel effektiver.
Gruß Phil