PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilenumbrüche in Variable aus DOS-Batch-Skript entfernen


Watson007
2021-07-08, 14:17:27
das muss doch relativ einfach möglich sein, aber die Beispiele die ich finde beziehen sich meist auf das Entfernen von Zeilenumbrüchen innerhalb von Dateien.

Ich will einen Zeilenumbruch aus einer Variable in einem DOS-Skript entfernen. Weiß jemand wie das geht?

universaL
2021-07-08, 15:10:02
ungetestet, aber geht da nicht "\r\n" als word? https://stackoverflow.com/questions/2772456/string-replacement-in-batch-file/2772498

muss es batch bleiben? oder geht auch powershell? letzteres würde wahrscheinlich das Problem stark vereinfachen ;-)

Darkman.X
2021-07-08, 16:29:46
Das ist alles andere als leicht, meiner Meinung nach.

Du musst mal googeln wie man Zeilenumbrüche in Variablen speicher kann. Bei meiner eigenen, früheren Suche hatte ich Code-Beispiele gefunden, welche eher umständlich waren. Aber wenn du weißt wie man sie speichert, könnte man mit Modifikationen und dem Link von "universaL" vermutlich die Ersetzung/Löschung hinbekommen. Es ist auf jeden Fall nicht soetwas simples wie "\r\n".
Du musst dabei auch berücksichtigen um welche Zeilenumbrüche es sich in deinem Fall handelt: CR+LF oder nur LF. Ich gehe eher von LF aus, aber wer weiß...

Auch wenn ich mich nicht mit Powershell auskenne, gehe ich auch davon aus, dass das Vorhaben dort wesentlich einfacher ist.

Rooter
2021-07-08, 19:42:25
Die Variable temporär in einer Datei zu speichern, dort zu bearbeiten und wieder in die Variable zu kopieren, ist keine Option?

MfG
Rooter

PatkIllA
2021-07-08, 19:47:25
Das ist alles andere als leicht, meiner Meinung nach.Einfache Textmanipulationen sind echt die Hölle in Batch. Rechnen ist kaum besser.

Wo kommt denn die Variable mit Zeilenumbruch her? Die kann man ja auch nicht so einfach setzen.

Monger
2021-07-08, 20:06:51
Mal so ausm Kopf heraus, in Powershell:

$neuerText = $meinText -replace "`r?`n", ""

Das ganze in Batch? öhm... Am besten aus der Shell heraus Powershell aufrufen 😬

Watson007
2021-07-08, 20:54:26
Wo kommt denn die Variable mit Zeilenumbruch her? Die kann man ja auch nicht so einfach setzen.

Hatte den Inhalt einer Datei in eine Variable eingelesen…

PatkIllA
2021-07-08, 21:00:04
Hatte den Inhalt einer Datei in eine Variable eingelesen…
Womit?
Die kann man doch auch gleich zeilenweise einlesen. for /F


Das klingt nach XY problem (https://en.wikipedia.org/wiki/XY_problem)

Watson007
2021-07-08, 21:48:05
Es hat sich wohl erledigt. Ich dachte es lag am Zeilenumbruch in der einzulesenden Datei, aber nach meinem SET-Befehl zum Füllen der Variable fanden sich noch ein paar Leerzeichen am Ende der Zeile im Skript. Diese Leerzeichen hat er prompt mit in die Variable übernommen, daher SET-Anweisungen besser mit Anführungszeichen umschließen.

Es kann trotzdem jemand noch gern eine Lösung zum Entfernen von Zeilenumbrüchen in Variablen posten, kann ich vielleicht später noch brauchen