Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Leerzeichen am Zeilenende entfernen

Frage Entwicklung Batch & Shell

Mitglied: thedog

thedog (Level 1) - Jetzt verbinden

21.08.2007, aktualisiert 23.10.2012, 12590 Aufrufe, 15 Kommentare

Hi,
ich habe schon ne ganze Weile gesucht und auch einen Ansatz gefunde. leider wurde mein Problem noch nicht zufriedenstellend gelöst

Mein Problem ist folgendes. Ich habe eine .txt in der leider an den Zeilenenden unterschiedlich viele Leerzeichen sind. Ich benötige die Datei aber ohne Leerzeichen am Zeilenende.
Ich habe hier im Forum schon eine Lösung gefunden (http://www.administrator.de/frage/leerzeichen-am-ende-der-zeile-mittels ...)
Dummerweise löscht diese Lösung alle Leerzeichen. In manchen Zeilen von meiner .txt befinden sich aber auch in der Zeile Leerzeichen.
Diese dürfen nicht entfernt werden.
Schon mal im Vorraus vielen dank für eure Hilfe.
Mitglied: paulepank
21.08.2007 um 11:12 Uhr
Hallo,
Ich habe eine .txt in der leider an den Zeilenenden unterschiedlich viele Leerzeichen sind.
Sicher , dass es nur Leerzeichen und nicht auch Tabs sind ?
Ich benötige die Datei aber ohne Leerzeichen am Zeilenende.
Code:
01.
sed s/\x20*$// datei_mit_leerzeichen.txt >datei_ohne_leerzeichen.txt
Das Programm "sed" findest du selbst

Schon mal im Vorraus vielen dank für eure Hilfe.

Ganz schlecht, setze lieber den Beitrag auf gelöst.

cu paulepank
Bitte warten ..
Mitglied: thedog
21.08.2007 um 11:31 Uhr
Problem ist, es sollte per Batch Datei gelöst werden, die auf jedem xbeliebigen Windows-XP Rechner läuft. Also geht es leider mit sed nicht.
Bitte warten ..
Mitglied: paulepank
21.08.2007 um 11:44 Uhr
Problem ist,
wie oft eine unvollkommene Problembeschreibung

es sollte per Batch Datei gelöst werden,
sed läuft auch in einer Batch

die auf jedem xbeliebigen Windows-XP Rechner läuft.
auf jedem xbeliebigen Rechner wird es solche txt.Dateien nicht geben
Wenn du die Batch auf jeden xbeliebigen Rechner verteilst kannst du gleichzeitig sed mit verteilen.
Also geht es leider mit sed nicht.
Dann doch

cu paulepank
Bitte warten ..
Mitglied: bastla
21.08.2007 um 11:55 Uhr
Hallo thedog!

Falls unter diesen Voraussetzungen zumindest ein VB-Script in Frage kommt, dann etwa so:
01.
'TTB.vbs 
02.
Const BAK = ".bak" 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
If WScript.Arguments.Count = 0 Then 
05.
		WScript.Echo "Es wurde keine Datei übergeben!" 
06.
		WScript.Quit(1) 
07.
End If 
08.
sFile = WScript.Arguments(0) 
09.
If Not fso.FileExists(sFile) Then 
10.
	WScript.Echo sFile & " konnte nicht gefunden werden!" 
11.
	WScript.Quit(1) 
12.
End If 
13.
Set oFile = fso.GetFile(sFile) 
14.
sFilePath = oFile.Path 
15.
If fso.FileExists(oFile.Name & BAK) Then fso.DeleteFile(oFile.Name & BAK) 
16.
oFile.Name = oFile.Name & BAK 
17.
Set oIn = fso.OpenTextFile(sFilePath & BAK, 1) 
18.
Set oOut = fso.OpenTextFile(sFilePath, 2, True) 
19.
Do While Not oIn.AtEndOfStream 
20.
	oOut.WriteLine RTrim(oIn.ReadLine) 
21.
Loop 
22.
oIn.Close 
23.
oOut.Close
Aufruf aus einem Batch mit
01.
cscript //nologo PfadZumScript\TTB.vbs Textdatei.txt
Die ursprüngliche Textdatei bleibt dabei als Sicherung unter "Textdatei.txt.bak" bestehen.

Grüße
bastla

[Edit] Nachtrag: Zeile
If fso.FileExists(oFile.Name & BAK) Then fso.DeleteFile(oFile.Name & BAK)
zum Löschen bereits bestehender Sicherungskopie eingefügt. [/Edit]
Bitte warten ..
Mitglied: thedog
21.08.2007 um 11:58 Uhr
Gibt es keine Möglichkeit mit Windowseigenem Boardwerkzeug des Problem zu lösen. Da wir dieses Batch Skript für .txt Dateien nutzen wollen, die auf nem Netzlaufwerk lagern wäre es äusserts praktisch, wenn man es ohne irgendwelche externen Tools verwenden könnte.



@bastla: Ein einfaches batch Skript wäre mir lieber. wenns irgendwie geht (Hatte mich vertippt )
Bitte warten ..
Mitglied: paulepank
21.08.2007 um 12:10 Uhr
Hallo,
Da wir dieses Batch Skript für .txt Dateien nutzen wollen, die auf nem Netzlaufwerk lagern

Wozu soll jetzt die Batch auf jedem Rechner laufen ? Du schreibst etwas wirr mein Bester.

cu paulepank
Bitte warten ..
Mitglied: bastla
21.08.2007 um 12:14 Uhr
Hallo thedog!

"bash", aber kein "sed"? Jetzt hast Du mich auch verwirrt ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
21.08.2007 um 12:38 Uhr
... aber solltest Du "Batch" gemeint haben, dann:
01.
@echo off & setlocal 
02.
set TTB=%temp%\TTB.vbs 
03.
echo BAK=".bak":Set fso=CreateObject("Scripting.FileSystemObject"):sFile=WScript.Arguments(0)>%TTB% 
04.
echo Set oFile=fso.GetFile(sFile):sFilePath=oFile.Path:If fso.FileExists(oFile.Name^&BAK) Then fso.DeleteFile(oFile.Name^&BAK)>>%TTB% 
05.
echo oFile.Name=oFile.Name^&BAK:Set oIn=fso.OpenTextFile(sFilePath^&BAK,1):Set oOut=fso.OpenTextFile(sFilePath,2,True)>>%TTB% 
06.
echo Do While Not oIn.AtEndOfStream:oOut.WriteLine RTrim(oIn.ReadLine):Loop:oIn.Close:oOut.Close>>%TTB% 
07.
cscript //nologo %TTB% Textdatei.txt 
08.
del %TTB%
Die zu bearbeitende Datei ("Textdatei.txt") ist in der vorletzten Zeile anzugeben.

Grüße
bastla
Bitte warten ..
Mitglied: thedog
21.08.2007 um 13:27 Uhr
... aber solltest Du "Batch"
gemeint haben, dann:
01.
@echo off & setlocal 
02.
> set TTB=%temp%\TTB.vbs 
03.
> echo BAK=".bak":Set 
04.
> fso=CreateObject("Scripting.FileSystemObject"):sFile=WScript.Arguments(0)>%TTB% 
05.
> echo Set 
06.
> oFile=fso.GetFile(sFile):sFilePath=oFile.Path:If 
07.
> fso.FileExists(oFile.Name^&BAK) Then 
08.
> fso.DeleteFile(oFile.Name^&BAK)>>%TTB% 
09.
> echo oFile.Name=oFile.Name^&BAK:Set 
10.
> oIn=fso.OpenTextFile(sFilePath^&BAK,1):Set 
11.
> oOut=fso.OpenTextFile(sFilePath,2,True)>>%TTB% 
12.
> echo Do While Not 
13.
> oIn.AtEndOfStream:oOut.WriteLine 
14.
> RTrim(oIn.ReadLine):Loop:oIn.Close:oOut.Close>>%TTB% 
15.
> cscript //nologo %TTB% Textdatei.txt 
16.
> del %TTB% 
17.
> 
Die zu bearbeitende Datei
("Textdatei.txt") ist in der
vorletzten Zeile anzugeben.

Grüße
bastla


Es kommt ne Fehlermeldung:
TTB.vbs(3, 1) Laufzeitfehler in Microsoft VBS
cript: Die Datei ist bereits vorhanden.
Beim ersten Mal hats noch funktioniert. jetzt leider nicht mehr

Edit:
if exist Textdatei.txt del Textdatei.txt
if exist Textdatei.txt.bak del Textdatei.txt.bak

Die zwei Zeilen an den Anfank der Batch Datei anfügen und es klappt :D

Danke an Bastla für seine vbs/Batch Skript :D
Natürlich würde ich mich über ein reines Batch Skript weiterhin freuen.
Bitte warten ..
Mitglied: bastla
21.08.2007 um 21:02 Uhr
Hallo thedog!

Das Löschen einer bereits bestehenden Sicherungskopie wird jetzt auch vom ersten Script selbst übernommen, sodass auch Deine zweite Batchzeile nicht mehr benötigt wird ...

Natürlich würde ich mich über ein reines Batch Skript weiterhin freuen.
Warum?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
22.08.2007 um 03:13 Uhr
Moin thedog,

bis auf weiteres schließe ich mich bastla's "Warum?" an.
Außerdem noch die Nachfrage: WTF sind denn diese "ein oder mehrere Leerzeichen am Zeilenende"????
Wollen wir nicht lieber mal die Ursache abstellen als auf drei verschiedene Arten dieses in den Brunnen gefallene Kiddie wieder hochzupäppeln?

Dann gibt sich ja bald gar keiner mehr Mühe, Logfiles brauchbar zu schreiben....

Grüße
Biber
Bitte warten ..
Mitglied: thedog
22.08.2007 um 08:58 Uhr
Das Problem ist, dass ich das Logfile so bekomm. Wo und wie es generiert wird weiß ich nicht.
Und wegen Batch. Mir würde es so reichen. Aber wie vorgesetzte nunmal so sind haben sie extra wünsche. Mir wurde gestern nach der Vorstellung der Lösung gesagt: "Warum VBS, geht des nicht nur in Batch"
Ich bin soweit, dass ich die Leerzeichen am Zeilenende löschen kann. Aber wenn ein Leerzeichen irgendwo in der Zeilenmitte steht löscht des Skript alles ab da.
Bitte warten ..
Mitglied: Biber
22.08.2007 um 20:52 Uhr
Moin thedog,

war ja durchaus nicht böse gemeint von mir - ist mir schon klar, dass es im Moment Dein Problem ist, dass diese Logdateien so -ich sage es mal hochdeutsch- fehlerhaft geschrieben werden.
Aber genau diesen Ball solltest Du zurückspielen an Deine Chefs.
Entweder die sagen: "Ey, is' ja eigentlich kein Fehler der Logdatei-schreibenden Software... ist eine liebenswerten Eigentümlichkeit, wegen der wir nicht meckern.."
---> Dann kannst Du sagen: "Okay, akzeptier' ich... und diese liebenswerte Eigentümlichkeit reiche ich Eins-zu-Eins weiter."
Oder die sagen: "Klar ist das ein Fehler, aber wir haben keine Rechte auf Fehlerbereinigung, weil das ein Freewaretool ist mit 'use on own risk'-Klausel".
---> Dann kannst Du wahrheitsgemäß berichten: "Okay, kein Problem, trailing blanks kann ich entfernen - entweder mit SED oder aber mit kiX/VBS... aber halt nicht ohne mögliche Seiteneffekte mit native Batch. Geht nicht ohne Stress - sacht sogar das admistrator-Forum.

Grüße
Biber
Bitte warten ..
Mitglied: thedog
27.08.2007 um 10:12 Uhr
Hab es scho meinem lieben Herrn Chef weitergegeben. Er hat es prompt weitergegeben, an die nette Firma, die das für das Log verantworliche Tool geschrieben hatte. Die nette Firma, die an dieser Stelle nicht genannt werden möchte, hat nach immerhin 2 Tagen ( laut Abrechnung 7h ) diesen Fehler zu beseitigt.
Mein Chef hat herzlich gelacht, mir die Email gezeigt und die Rechnung nicht akzeptiert.
Inzwischen wurde die Rechnung beigelegt. Der BigBoss der anderen Firma war eben auf nen Kaffee bei uns hat sich mehrfach entschuldigt und deren Fehler eingestanden.
"Natürlich hätte nie eine Rechnung geschrieben werden dürfen, da die Ausgabe von ihnen nicht sauber programmiert wurde und wir uns ja zu recht beschwert hätten ...."
Trotzdem vielen vielen Dank an euch alle, die mir geholfen haben.
Bitte warten ..
Mitglied: Biber
27.08.2007 um 10:50 Uhr
Moin thedog,

auch wenn Du es vielleicht schon geahnt haben magst: ich finde es so auch die mit Abstand beste Lösung.

Denn es ist verdammt schwergefallen, in meinem vorangegangenen Kommentar dieses logdatei-erzeugende Machwerk halbwegs unverfänglich als fehlerhaft geschrieben zu bezeichnen.
Bei uns in Bremen wurden noch vor wenigen Jahren derartige Lieferanten als Deichverstärkung genutzt, behaupten böse Zungen.

Na ja, ich könnte mir vorstellen, dass Du den gemeinsamen Kaffee mit dem Other-BigBoss ab-so-lut genossen hast. Jede einzelne Minute...*gg

Danke Dir für die Rückmeldung und ich schließe den Thread mal.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Leerzeichen per Batch entfernen vor der Weiterbearbeitung (3)

Frage von daHartl zum Thema Batch & Shell ...

Microsoft Office
gelöst Dropdownlisten in Abhängigkeit mit Leerzeichen im Namen (Datenüberprüfung) (2)

Frage von kevische zum Thema Microsoft Office ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

CPU, RAM, Mainboards
CPU Lüfter von CPU entfernen (6)

Frage von uridium69 zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...