Top-Themen

Aktuelle Themen (A bis Z)

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

Mehrere Leerzeichen per Batch löschen

Frage Entwicklung Batch & Shell

Mitglied: afrodyte

afrodyte (Level 1) - Jetzt verbinden

24.08.2009, aktualisiert 15:32 Uhr, 5978 Aufrufe, 10 Kommentare

Hallo, es gibt zwar eine ähnliche Anfrage, aber die hat mein Problem nicht beantwortet.

Ich möchte aus einer Exportdatei mehrere aufeinanderfolgende Leerzeichen löschen.
Wie müsste der Befehl dazu lauten?
Mitglied: rubberman
24.08.2009 um 16:11 Uhr
Hallo afrodyte,

du könntest das evtl. so lösen:
01.
@echo off &setlocal 
02.
 
03.
set inFile=test1.txt 
04.
set outFile=test2.txt 
05.
 
06.
type nul>"%outFile%" 
07.
for /f "delims=: tokens=1*" %%i in ('findstr /n $ "%inFile%"') do set "Zeile=%%j" &call :loop 
08.
goto :eof 
09.
 
10.
:loop 
11.
if not defined Zeile (echo.>>"%outFile%") &goto:eof 
12.
for /f "tokens=1*" %%a in ("%Zeile%") do set "wort=%%a" &set "Zeile=%%b" 
13.
set "output=%output% %wort%" 
14.
if not defined Zeile (goto ausgabe) else goto loop 
15.
:ausgabe 
16.
echo.%output:~1%>>"%outFile%" 
17.
set "output=" 
18.
goto :eof
Grüße
rubberman
Bitte warten ..
Mitglied: afrodyte
24.08.2009 um 16:31 Uhr
Hallo rubberman,

das haut leider nicht ganz hin, es bleiben von den 9 Leerzeichen weiterhin zwei stehen...

Noch eine Idee?

Trotzdem noch: vielen Dank für deine Rückmeldung.

Gruß
afrodyte
Bitte warten ..
Mitglied: bastla
24.08.2009 um 17:40 Uhr
Hallo afrodyte!

Da rubbermans Lösung eigentlich nur je ein Leerzeichen belassen dürfte, wäre es sinnvoll, einige (anonymisierte) Zeilen aus der Exportdatei (unter Verwendung der "Code"-Formatierung) zu posten, um das Problem damit nachvollziehen zu können.

Außerdem: Wenn "mehrere aufeinanderfolgende Leerzeichen" gelöscht werden sollen und von 9 nur 2 übrig blieben, wäre die Anforderung eigentlich erfüllt - daher formuliere bitte etwas genauer, ob alle der mehreren Leerzeichen eliminiert oder doch auf nur eines reduziert werden bzw wie einzelne vorhandene Leerzeichen behandelt werden sollen ...
@rubberman
Eine Anmerkung zum "findstr": Wenn die letzte Zeile keine Zeilenschaltung enthält, wird sie durch den Suchbegriff "$" auf der Strecke bleiben - wenn Du alternativ "^" (mit Anführungszeichen geschrieben) verwendest, kann das nicht passieren.

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
24.08.2009 um 17:53 Uhr
@afrodyte,
kann mich bastla nur anschließen. Im Test werden auch 9 aufeinanderfolgende Leerzeichen auf eines reduziert.

@bastla,
danke für den Tipp. Über genau dieses Problem hab ich schon ein paar mal nachgedacht, jetzt hab ich die Lösung (und das ganz ohne danach gefragt zu haben ).

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
24.08.2009 um 18:12 Uhr
@rubberman
jetzt hab ich die Lösung
Was meinst Du wohl, von wem die stammt ...
(und das ganz ohne danach gefragt zu haben )
Gelegentlich fehlt's mir an Zurückhaltung ...

Grüße
bastla
Bitte warten ..
Mitglied: afrodyte
24.08.2009 um 20:33 Uhr
Hallo,
es sollen mehrere aufeinanderfolgende Leerzeichen entfernt werden. Und dnan natürlich alle, die dort stehen. Es dürfen jedoch keine einzelnen Leerzeichen entfernt werden, sondern nur dort wo mehrere nebeneinanderstehen, alle. Per Ersetzen funktioniert das einwandfrei und so brauche ich es auch im Script.
Eine Beispieldatei sende ich morgen.
Bitte warten ..
Mitglied: bastla
24.08.2009 um 21:11 Uhr
Hallo afrodyte!

Mit native Batch lässt sich das zwar auch lösen, aber mit ein wenig eingebettetem VBScript ist es einfacher:
01.
@echo off & setlocal 
02.
set "inFile=test1.txt" 
03.
set "outFile=test2.txt" 
04.
 
05.
set R=%temp%\RemoveBlanks.vbs 
06.
>%R%  echo Set fso=CreateObject("Scripting.FileSystemObject") 
07.
>>%R% echo T=fso.OpenTextFile(WScript.Arguments(0)).ReadAll 
08.
>>%R% echo Set rE=New RegExp:re.Pattern=" {2,}":re.Global=True 
09.
>>%R% echo fso.CreateTextFile(WScript.Arguments(1),True).Write rE.Replace(T,"") 
10.
 
11.
cscript //nologo %R% "%inFile%" "%outFile%"
Es kann bei Bedarf auch "in" der Datei ersetzt werden - dazu einfach für %outFile% die selbe Datei wie für %inFile% angeben.
Ganz ohne Umweg über einen Batch sähe das VBScript so aus
01.
Set fso=CreateObject("Scripting.FileSystemObject") 
02.
T=fso.OpenTextFile(WScript.Arguments(0)).ReadAll 
03.
Set rE=New RegExp 
04.
re.Pattern=" {2,}" 
05.
re.Global=True 
06.
fso.CreateTextFile(WScript.Arguments(1),True).Write rE.Replace(T,"")
und könnte mit
cscript //nologo "RemoveBlanks.vbs" "test1.txt" "test2.txt"
aufgerufen werden.

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
24.08.2009 um 21:49 Uhr
@bastla,
gut dass wenigstens Du verstanden hast, wie das ganze gemeint war. Nachdem ich mir Dein VBScript angesehen habe, hab ich's auch kapiert. Hätte da zwar auch noch einen Batchgedanken in petto, aber Du hast recht, vbs ist sinnvoller (sicherer und zig mal schneller).

Ja, und dann war wohl noch das "Urheber-Danke" an Biber fällig
Bitte warten ..
Mitglied: afrodyte
25.08.2009 um 18:10 Uhr
Hallo bastla,

vielen Dank für den weiteren Vorschlag.
Leider bleibt auch bei dieser Befehlskette ein Leerzeichen am Ende der Zeile stehen.
Wenn du (oder gern auch jemand anderes) noch einen Vorschlag dazu hast, wie ich ALLE Leerzeichen am Ende der Zeile loswerden kann, würde ich ihn gerne testen.

Beispieldaten:
01.
1;10;Nachname;Vorname;01.01.1911 00:00:00;w;Sowieso Str. 1;Stadt;10111;01.02.1999 00:00:00;111111;211111          
02.
1;12;Nachname;Vorname;01.01.1911 00:00:00;w;Sowieso Str. 1;Stadt;10111;01.02.1999 00:00:00;111111;211111          
03.
1;14;Nachname;Vorname;01.01.1911 00:00:00;w;Sowieso Str. 1;Stadt;10111;01.02.1999 00:00:00;111111;211111          
04.
1;16;Nachname;Vorname;01.01.1911 00:00:00;w;Sowieso Str. 1;Stadt;10111;01.02.1999 00:00:00;111111;211111         

Grüße
afrodyte
Bitte warten ..
Mitglied: bastla
25.08.2009 um 18:21 Uhr
Hallo afrodyte!
Leider bleibt auch bei dieser Befehlskette ein Leerzeichen am Ende der Zeile stehen.
Dann war dort vermutich auch vorher bereits ein einzelnes solches ...

Anyhow, wenn Du
Write rE.Replace(T,"")
durch
Write RTrim(rE.Replace(T,""))
ersetzt, sollte auch dieses letzte Leerzeichen Geschichte sein.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leerzeichen am Anfang und Ende löschen
gelöst Frage von Michael-24Batch & Shell17 Kommentare

Hallo zusammen, ich habe bereits einen über 4 Jahre alten Eintrag hier gefunden, was sich mit diesem Thema beschäftigt. ...

Batch & Shell
BATCH: Leerzeichen im Registry Pfad
gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Batch & Shell
Batch: doppeltes Leerzeichen in Dateinamen?
gelöst Frage von WoswaasiBatch & Shell3 Kommentare

Hallo! Wir verarbeiten bei uns in der Arbeit Audio-Dateien, die über Nacht in 5-Minuten-Abschnitte gesplittet werden. Ich habe dafür ...

Batch & Shell
Batch Variable setzten mit Leerzeichen
gelöst Frage von Marlon1Batch & Shell3 Kommentare

Hallo :) Ich würde gerne das man mit "set /p code= " 2 Wörter in die Variable "code" setzen ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 6 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 8 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...