ramon89
Goto Top

Batch befehl für einen zeilenumbruch

Guten Tag,

ich habe folgendes Problem welches mich seit ein paar Tagen zum Verzweifeln bringt.
Ich habe einen ziemlich lange Zeichenfolge und möchte das nach xx Zeichen ein Zeilenumbruch einführt wird,
Zudem möchte ich das alle "&" Zeichen und der Buchstabe "F" durch Leerzeichen ersetzt werden.
Das ganze möchte ich als Batch Datei haben.

Danke im Voraus für eure Hilfe.

MfG Ramon

Content-Key: 207609

Url: https://administrator.de/contentid/207609

Printed on: April 26, 2024 at 02:04 o'clock

Member: blowdow
blowdow Jun 06, 2013 at 13:21:07 (UTC)
Goto Top
Hallo Ramon

Ich verstehe noch nicht ganz, was du genau möchtest. Hast du diese lange Zeichenfolge in einem cmd/bat drinstehen? Oder wo genau? Und, wozu genau brauchst du einen Zeilenumbruch?

Wir können dir besser helfen, wenn du nochmals ganz genau schreibst, was wie funktioniren sollte. ok?

Grüsse
Member: colinardo
Solution colinardo Jun 06, 2013 updated at 13:38:44 (UTC)
Goto Top
Hallo Ramon,

Zeilenumbruch siehe:
echo Zeilenumbruch
oder folgenden Code benutzen(Achtung die zwei Leerzeilen müssen in der Batch erhalten bleiben)
setlocal ENABLEDELAYEDEXPANSION
set NL=^
Zum nutzen des Zeilenumbruchs schreibst du dann z.B.
echo Zeile 1!NL!Zeile2

Von einer Zeichenfolge die ersten 20 Zeichen extrahieren
%variable:~0,20%
Batch ersetzen von & und F durch Leerzeichen
set replacedString=%variable:&= %
set replacedString=%replacedString:F= %

Grüße Uwe
Member: ramon89
ramon89 Jun 06, 2013 at 13:34:14 (UTC)
Goto Top
Also ich habe ein txt Dokument welches in ein exel Dokument eingepflegt werden soll.
Der Zeichensatz sieht folgendermaßen aus:
1370349125~F1=855&F2=resolveuid%2F5f71b50e068943938d38b47e5c268098%2Fimage_preview&F3=1&F4=23&F5=2&F6=1&F7=3&F8=1&F9=1&F10=1&F11=2&F12=2&F13=4&F14=4&F15=1&F16=1&F17=4&F18=2&F19=4&F20=5&F21=2&F22=4&F23=2&F24=2&F25=3&F26=1&F27=4&F28=3&F29=5&F30=1&F31=3&F32=4&F33=4&F34=2&F35=2&F36=1&F37=1&F38=3&F39=3&F40=5&F41=5&F42=3&F43=1&F44=4&F45=2&F46=1 1370349272~F1=855&F2=resolveuid%2F41ee894901834021a6d6bec396622f08%2Fimage_preview&F3=1&F4=23&F5=2&F6=1&F7=5&F8=3&F9=4&F10=2&F11=1&F12=3&F13=5&F14=2&F15=2&F16=1&F17=4&F18=1&F19=4&F20=5&F21=5&F22=2&F23=2&F24=4&F25=3&F26=4&F27=1&F28=2&F29=5&F30=2&F31=1&F32=5&F33=5&F34=3&F35=2&F36=5&F37=2&F38=2&F39=4&F40=4&F41=2&F42=1&F43=1&F44=5&F45=5&F46=2 1370349409~F1=855&F2=resolveuid%2F213a798667e346e281627438b021cfaf%2Fimage_preview&F3=1&F4=23&F5=2&F6=1&F7=5&F8=4&F9=4&F10=2&F11=4&F12=2&F13=5&F14=5&F15=1&F16=1&F17=4&F18=2&F19=4&F20=5&F21=2&F22=3&F23=2&F24=1&F25=3&F26=4&F27=4&F28=5&F29=4&F30=1&F31=1&F32=3&F33=4&F34=2&F35=2&F36=4&F37=1&F38=5&F39=3&F40=4&F41=4&F42=2&F43=1&F44=3&F45=4&F46=1

dies ist nur ein Ausschnitt aus dem txt Dokument. Ich möchte diese Datei jetzt in Excel einfügen. Dafür muss ich alle "F1=", "F2=" ..."F46=" durch ein Leerzeichen ersetzen. Zudem soll nachdem F=46 ein Zeilenumbruch kommen.

Hintergrund der ganzen Sache ist, das Excel für jeder Nummer einer eigene Zeile aufmacht und das Excel einen neue Spalte erkennt.
Member: Endoro
Endoro Jun 06, 2013 updated at 14:34:00 (UTC)
Goto Top
Hallo Ramon,

das geht am einfachsten mit sed:
sed  "s/F46=/&\n/g;s/F[0-9]\+=/ /g;s/&/ /g" file  

Gruss!
Member: ramon89
ramon89 Jun 06, 2013 at 14:58:31 (UTC)
Goto Top
aber dafür müsste ich doch bestimmte Programme auf dem windows rechner installiert haben.
Sinn des ganzen ist, das ich diese Datei auf jeden Windows Rechner ausführen kann.Und da ist mir nur batch bekannt.
Korrigiert mich bitte wenn ich falsch liege aber kenne mich nicht so mit sed aus.

Danke für die schnellen Antwortenface-smile
Member: Endoro
Endoro Jun 06, 2013 updated at 16:32:43 (UTC)
Goto Top
Das Problem bei deinem String ist, dass er einerseits voller giftiger Sonderzeichen und andererseits eventuell überhaupt zu lang für Batch ist, was wir nicht wissen. Teste doch, ob @colinardo's Code für dich funktioniert.

sed gibts auch ohne Installation, einfach auspacken und loslegen, z.B. hier. Die Verwendung ist geht so:
sed "befehle" < "inputfile" > "outputfile"  

Gruss!
Member: ramon89
ramon89 Jun 06, 2013 at 20:29:18 (UTC)
Goto Top
Habe mir die Datein runtergeladen und die Sed exe ausgeführt. Danach habe ich folgenden Befehl:
sed 's/\&/ /g' Auswertung.txt > temp.txt
in einer bat Datei ausgeführt, er erstellt zwar die temp.txt aber diese ist leer.
Was mache ich falsch?
Member: Biber
Biber Jun 06, 2013 updated at 20:52:34 (UTC)
Goto Top
Moin ramon89,

geh in den Keller, hol die Laubsäge hoch und zwei Balsaholzplatten im Format 700x30mm, säg dir Enduros Zeile und deine Zeile in diesem Format aus.
Dann beide Artefakte übereinanderlegen.

Wo steht denn was über?

Grüße
Biber
Member: Endoro
Endoro Jun 06, 2013 updated at 20:54:32 (UTC)
Goto Top
Zitat von @ramon89:
Habe mir die Datein runtergeladen und die Sed exe ausgeführt. Danach habe ich folgenden Befehl:
sed 's/\&/ /g' Auswertung.txt > temp.txt
in einer bat Datei ausgeführt, er erstellt zwar die temp.txt aber diese ist leer.
Was mache ich falsch?

Wenn ich das eingebe kommt:
Der Befehl "/" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
versuch es mit dem von mir oben schon geposteten:
sed  "s/F46=/&\n/g;s/F[0-9]\+=/ /g;s/&/ /g" Auswertung.txt > temp.txt  

PS: @Biber war schneller O.o face-smile
Member: ramon89
ramon89 Jun 07, 2013 at 05:58:06 (UTC)
Goto Top
Super danke face-smile klappt alles sehr gut face-smile habe den Befehl jetzt noch angepasst, da ich gemerkt habe das F46 ja mit einer Leerzeile überschreiben wird face-smile

sed -e"s/\(.\{341\}\)/\1\n/g;s/F[0-9]\+=/ /g;s/&/ /g" Auswertung.txt > temp.txt

das ist jetzt meine angepasste Version und sie tut ihren Dienst super
Member: Tomtom33
Tomtom33 Sep 30, 2023 updated at 12:59:48 (UTC)
Goto Top
Auch wenn dieser Beitrag schon über 10 Jahre alt ist, möchte ich für alle die nach einer Lösung für das Problem mit Zeilenumbrüchen suchen, meine Lösung vorstellen, in der Hoffnung, dass es dem einen oder anderen bei der Batch-Erstellung hilft.
Die Lösung ist sehr kompakt und effektiv, kommt außerdem ohne Umwege nur mit Bordmitteln aus, was bei komplexen Batchdateien die Lesbarkeit und das Debugging erleichtern kann.

Nachdem am Anfang sichergestellt wird, dass die erweiterten Funktionen zur Verfügung stehen, sowie die Unterdrückung des Befehlsechos gesetzt ist (@echo off &setlocal enabledelayedexpansion), setzt man mit "set" eine Variable mit den Inhalt "^&echo\" (ohne Anführungs- und Leerzeichen!), also wie in meinem Beispiel lautet der Befehl dann "set \n=^&echo\" in dem ich "\n" als Variablennamen gewählt habe.
Dieses bewirkt, dass bei Aufruf der Variable in einem String an der Stelle ein Zeilenumbruch (CR/LF) bei der Ausgabe eingefügt wird (durch Ausführen von "echo\"), welcher sich mehrfach wiederholen kann und nur von der maximal möglichen Anzahl an Zeichen im betreffenden String abhängt.
Einsetzen kann man ihn dann mittels "%Variable%", also in dem Fall "%\n%" (wichtig sind die beiden %, die den Bestandteil dazwischen als Variable deklarieren).

In dem Beispiel unten könnt ihr es auch gerne selbst ausprobieren:

@echo off &setlocal enabledelayedexpansion
::Zeilenumbruch als \n definieren
set \n=^&echo\

echo test 1%\n%test 2%\n%test 3%\n%und so weiter ...

Die Ausgabe sieht dann wie folgt aus:

>e:/zeilenumbruch_test.bat
test 1
test 2
test 3
und so weiter ...

>