Bestimmtes Zeichen durch Seitenumbruch ersetzen per Batch
Da ich hier neu bin erstmal an alle: Hallo zusammen.
Leider hat mir die bisherige Suche in diesem Forum nicht weitergeholfen, daher meine Frage:
Ich habe eine csv-Datei, in der leider alle Einträge nur per getrennt sind, sofern ich diese per Editor aufrufe. Dieses möchte ich gerne durch einen Seitenumbruch ersetzen, damit jeder Eintrag als eigene Zeile angezeigt wird.
Wie mache ich das?
Hinweis: Ich kann die Datei nicht mit Excel o.ä. aufrufen und speichern, da die Konvertierung nachts automatisch geschehen soll, damit die Datei nachts von einem anderen System weiterverarbeitet werden kann.
Aufbau der Datei:
Spalte1,Spalte2,Spalte3Spalte1,Spalte2,Spalte3 usw.
Ich habe schonmal was programmiert, aber das funktioniert leider nicht, da ich den String nicht kenne.
echo Setzen der Variablen
set "filename1=Datei1.csv-*"
set "filename2=Datei1-org.csv"
set "filename3=Datei1-bearb.csv"
set "filename4=Datei1.csv"
echo Fuege Seitenumbrueche ein
setlocal enabledelayedexpansion
for /F "delims=" %%a in (%filename2%) do (
set text=%%a
set text=!text:^=XXX! <- was muss ich für das XXX einsetzen?
echo !text!>>%filename3%
)
Leider hat mir die bisherige Suche in diesem Forum nicht weitergeholfen, daher meine Frage:
Ich habe eine csv-Datei, in der leider alle Einträge nur per getrennt sind, sofern ich diese per Editor aufrufe. Dieses möchte ich gerne durch einen Seitenumbruch ersetzen, damit jeder Eintrag als eigene Zeile angezeigt wird.
Wie mache ich das?
Hinweis: Ich kann die Datei nicht mit Excel o.ä. aufrufen und speichern, da die Konvertierung nachts automatisch geschehen soll, damit die Datei nachts von einem anderen System weiterverarbeitet werden kann.
Aufbau der Datei:
Spalte1,Spalte2,Spalte3Spalte1,Spalte2,Spalte3 usw.
Ich habe schonmal was programmiert, aber das funktioniert leider nicht, da ich den String nicht kenne.
echo Setzen der Variablen
set "filename1=Datei1.csv-*"
set "filename2=Datei1-org.csv"
set "filename3=Datei1-bearb.csv"
set "filename4=Datei1.csv"
echo Fuege Seitenumbrueche ein
setlocal enabledelayedexpansion
for /F "delims=" %%a in (%filename2%) do (
set text=%%a
set text=!text:^=XXX! <- was muss ich für das XXX einsetzen?
echo !text!>>%filename3%
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162954
Url: https://administrator.de/contentid/162954
Ausgedruckt am: 25.11.2024 um 00:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo MarkusLB und willkommen im Forum!
Sofern es keine heftigen Einwände gegen VBScript gibt, würde ich in diesem Fall darauf zurückgreifen (dann klappt's zB auch mit richtig großen Dateien):
Bei Bedarf lassen sich die Dateinamen auch als Parameter übergeben ...
Es werden übrigens durch dieses Script Zeilen-, nicht Seitenümbrüche eingefügt ...
Grüße
bastla
Sofern es keine heftigen Einwände gegen VBScript gibt, würde ich in diesem Fall darauf zurückgreifen (dann klappt's zB auch mit richtig großen Dateien):
Ein = "Datei1-org.csv"
Aus = "Datei1.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile(Aus).Write Replace(fso.OpenTextFile(Ein).ReadAll, "", vbCrLf)
Es werden übrigens durch dieses Script Zeilen-, nicht Seitenümbrüche eingefügt ...
Grüße
bastla
Hallo Zusammen ;)
Ich hoffe ihr und besonders jeb-the-batcher könnt mir auch erfolgreich helfen.
Aufgabe:
Eine txt-Datei Zeilenweise einlesen und bestimmte Zeichen löschen bzw. durch ein Absatz(Enter) ersetzen.
Inhalt der neu.txt:
b 28 xyz b 38 xyz b 48 xyz
b 28 xyz b 38 xyz b 48 xyz
b 28 xyz b 38 xyz b 48 xyz
Das soll dann in der test.txt wie folgt aussehen:
xyz
xyz
xyz
xyz
usw.…
Quasi alles schön untereinander anstatt nebeneinander
Hier nun mein Lösungsansatz (den ich mir zusammen kopiert habe …)
Das funktioniert soweit auch alles ganz gut die b 28 , b38 und b 48 werden entfernt nur wenn es daran geht das Leerzeichen durch ein Zeilenumbruch(Enter) zu ersetzen löscht er alle Leerzeichen so das alles zusammen steht
Ich hoffe ihr könnt mir helfen ich bin hier schon fast am Verzweifeln und bedanke mich bei jeden der mir weiter helfen kann
Gruss Itow
Ich hoffe ihr und besonders jeb-the-batcher könnt mir auch erfolgreich helfen.
Aufgabe:
Eine txt-Datei Zeilenweise einlesen und bestimmte Zeichen löschen bzw. durch ein Absatz(Enter) ersetzen.
Inhalt der neu.txt:
b 28 xyz b 38 xyz b 48 xyz
b 28 xyz b 38 xyz b 48 xyz
b 28 xyz b 38 xyz b 48 xyz
Das soll dann in der test.txt wie folgt aussehen:
xyz
xyz
xyz
xyz
usw.…
Quasi alles schön untereinander anstatt nebeneinander
Hier nun mein Lösungsansatz (den ich mir zusammen kopiert habe …)
@ECHO
SETLOCAL enabledelayedexpansion
SET "quell_datei=neu.txt"
SET "ziel_datei=test.txt"
REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)
REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!)
GOTO :weiter
:ersetzen
SET zeile=!zeile:b 28 =!
SET zeile=!zeile:b 38 =!
SET zeile=!zeile:b 48 =!
SET zeile=!zeile:^ =^
!
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof
:weiter
pause
Das funktioniert soweit auch alles ganz gut die b 28 , b38 und b 48 werden entfernt nur wenn es daran geht das Leerzeichen durch ein Zeilenumbruch(Enter) zu ersetzen löscht er alle Leerzeichen so das alles zusammen steht
Ich hoffe ihr könnt mir helfen ich bin hier schon fast am Verzweifeln und bedanke mich bei jeden der mir weiter helfen kann
Gruss Itow
Hallo,
mit einer Leerzeile kannst du keinen Seitenvorschub erzeugen. Aber mach dir nichts draus, jtb hat immer solche irren Vorschläge.
Das Steuerzeichen für Seitenvorschub ist ^L (STRG-L). Ab besten änderst du deine Textdatei mit einem Editor, der dir die Eingabe von Steuerzeichen ermöglicht.
Vielleicht hat ja bastla eine bessere Lösungsmöglichkeit mit VBscript parat.
Gruß
mit einer Leerzeile kannst du keinen Seitenvorschub erzeugen. Aber mach dir nichts draus, jtb hat immer solche irren Vorschläge.
Das Steuerzeichen für Seitenvorschub ist ^L (STRG-L). Ab besten änderst du deine Textdatei mit einem Editor, der dir die Eingabe von Steuerzeichen ermöglicht.
Vielleicht hat ja bastla eine bessere Lösungsmöglichkeit mit VBscript parat.
Gruß
@99045
Wenn doch jedes "xyz" (von dem wir allerdings sehr wenig wissen, insbes, ob es selbst Leerzeichen enthält) in eine neue Zeile soll, wäre ja
der einfachste Ansatz ...
Aus "sportlichen Gründen" verzichte ich (vorläufig ) auf VBS ...
Grüße
bastla
P.S.: @--Itow--
Willkommen im Forum! Falls der Ansatz noch nicht genügt, unterstütze ich jebs Vorschlag, einen neuen Thread zu beginnen ...
Wenn doch jedes "xyz" (von dem wir allerdings sehr wenig wissen, insbes, ob es selbst Leerzeichen enthält) in eine neue Zeile soll, wäre ja
for %%i in (!zeile!) do >>%ziel_datei% echo %%i
Aus "sportlichen Gründen" verzichte ich (vorläufig ) auf VBS ...
Grüße
bastla
P.S.: @--Itow--
Willkommen im Forum! Falls der Ansatz noch nicht genügt, unterstütze ich jebs Vorschlag, einen neuen Thread zu beginnen ...
@jtb
Verschone mich bitte zukünftig mit deinen geistigen Ergüssen und verteile deine Gunst bitte an andere, ja?
Danke.
Verschone mich bitte zukünftig mit deinen geistigen Ergüssen und verteile deine Gunst bitte an andere, ja?
Danke.
Vielen vielen Dank euch es funktioniert ich bin so glücklich xD
Besondere Dank geht an bastla ;)
habe einfach
IF [!zeile!] EQU (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
mit
for %%i in (!zeile!) do >>%ziel_datei% echo %%i
ersetzt und schon funktioniert es da wäre ich nie drauf gekommen
vielen vielen dank
Gruß Itow
/edit
habe auch die
SET zeile=!zeile:^ =^
!
entfernt hat ich in der aufregung vergessen nochmal danke ;)
Besondere Dank geht an bastla ;)
habe einfach
IF [!zeile!] EQU (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
mit
for %%i in (!zeile!) do >>%ziel_datei% echo %%i
ersetzt und schon funktioniert es da wäre ich nie drauf gekommen
vielen vielen dank
Gruß Itow
/edit
habe auch die
SET zeile=!zeile:^ =^
!
entfernt hat ich in der aufregung vergessen nochmal danke ;)