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
GELÖST

Zeilenumbruch aus Textdatei löschen oder ersetzen mit VB-Sript

Frage Entwicklung VB for Applications

Mitglied: Steevede

Steevede (Level 1) - Jetzt verbinden

02.07.2009, aktualisiert 14:40 Uhr, 16208 Aufrufe, 8 Kommentare

Hallo! Vermutlich ist mein Problem für erfahrene VBler eine Fingerübung ... aber ich bin absoluter Anfänger und verzweifle an diesem kleinen Problem!

Aus einer Textdatei (diese stammt aus einem Mailprogramm - kann einfach mit dem Windows Editor geöffnet werden) sollen bestimmte Zeichen aussortiert und ersetzt werden - das ist auch kein Problem für mich ... dafür habe ich mir ein VB-Script erstellt, das auch gut funktioniert! Allerdings muss auch ein Zeichen, das immer von einem Zeilenwechsel gefolgt wird ersetzt werden und zwar inklusive Zeilenumbruch! Das Zeichen zu entfernen ist kein Problem ... aber wie mach ich VB klar, dass auch der Zeilenumbruch nach diesem Zeichen entfernt werden soll? Versuche mit vbLf , vbCr, vbCrLf waren erfolglos - damit kann ich zwar einen Zeilenwechsel einfügen, aber nicht den Zeilenwechsel erkennen und ersetzen! Die Folgezeile soll einfach angehängt werden! Hier mein Beispiel:

Erst-irgendein-text-und-das-letzte-zeichen-dieser-zeile-soll-gelöscht-werden# (<- hier ist der böse Zeilenwechsel!!)
und-dies-soll-hinten-dran-in-die-obere-Zeile

Hat da jemand eine Lösung für mich?
Wie gesagt: das "#" zu löschen oder zu ersetzen ist kein Problem ... aber was muß ich zum Löschen des Leerzeichens im VB-Script eintragen ( /r/n war auch ein Versuch ... hat nicht funktioniert!)
Mein Versuch war folgendermassen:

FeldtrennerAlt = "#" & vbLf
FeldtrennerNeu = "Test"

Diese Zeilen haben im text gar nichts verändert!
Wenn ich "& vbLf" weglasse, ersetzt das Script das "#" durch das Wort "Test" ... der Zeilenwechsel bleibt aber bestehen
Ich bin für jeden Tip dankbar!!
Mitglied: Logan000
02.07.2009 um 14:47 Uhr
Moin Moin

Versuch doch mal mit
01.
FeldtrennerAlt = "#" & vbCrLf 
02.
....
Gruß L.
Bitte warten ..
Mitglied: Steevede
02.07.2009 um 14:53 Uhr
Zitat von Logan000:
Moin Moin

Versuch doch mal mit
01.
> FeldtrennerAlt = "#" & vbCrLf 
02.
> .... 
03.
> 
Gruß L.


Hallo Logan000!
Hab ich schon probiert! (siehe oben in meinem Text) - in allen Fällen (vbCr, vbLf und vbcrLf) kein Erfolg ... wie gesagt zum Einfügen eines Zeilenwechsels kann man sie benutzen ... aber leider nicht zum Entfernen!
Bitte warten ..
Mitglied: TsukiSan
02.07.2009 um 15:03 Uhr
Hallo

man könnte doch erst mal mit der InStr herausfinden, wo die "#" steht, dann - aber nur wenn es einen Zeilenumbruch immer gibt! - ließt man sich mittels der Stringvariable1 alle Zeichen davor ein
01.
Stringvariable 1 = mid 
02.
(Textkomplett,1,bisAnDieStelleWoDie#Steht)
dann sucht man weiter nach dem Leerzeichen, welches ja für den Zeilenumbruch stehen müßte
und übergibt den Rest in ähnlicher Weise an Stringvariable2.
Anschließend führt man Stringvariable1 und 2 zusammen.

Gruß
Tsuki
Bitte warten ..
Mitglied: Bolle97
02.07.2009 um 15:10 Uhr
Hallo,

ich nutze für dieses Problem immer "TR.EXE".
Einfach mal googeln oder eine Nachricht an mich, dann sende ich Dir das zu.

Gruß René
Bitte warten ..
Mitglied: Logan000
02.07.2009 um 15:19 Uhr
Moin

Evtl genügt es ja auch den Text gleich, nur Zeilenweise einzulesen, z.B.
01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
Set objSourceFile = objFSO.OpenTextFile("Source.txt", 1)	' Quelldatei öffnen 
03.
	Do Until objSourceFile.AtEndOfStream 	 
04.
		szNextLine = objSourceFile.Readline	 
05.
		if Right(szNextLine,1) = "#"  Then	 
06.
                   '  jetzt nächste zeile holen und zusammen setzen 
07.
		end if		 
08.
	Loop
Gruß L.
Bitte warten ..
Mitglied: TsukiSan
02.07.2009 um 15:26 Uhr
Hi,

ich denke Logan000 schreibt da einen guten Ansatz, wie sich soetwas als Script umsetzen läßt. Meine Idee (siehe oben) würde VBS und VB etwas vermischen.

Gruß
Tsuki
Bitte warten ..
Mitglied: Steevede
02.07.2009 um 15:29 Uhr
Zitat von TsukiSan:
Hallo

man könnte doch erst mal mit der InStr herausfinden, wo die
"#" steht, dann - aber nur wenn es einen Zeilenumbruch immer
gibt! - ließt man sich mittels der Stringvariable1 alle Zeichen
davor ein
01.
> Stringvariable 1 = mid 
02.
> (Textkomplett,1,bisAnDieStelleWoDie#Steht) 
03.
> 
dann sucht man weiter nach dem Leerzeichen, welches ja für den
Zeilenumbruch stehen müßte
und übergibt den Rest in ähnlicher Weise an
Stringvariable2.
Anschließend führt man Stringvariable1 und 2 zusammen.

Gruß
Tsuki


Hallo!
Das ist zwar eine Idee - löst aber das Problem nicht wirklich!
Der Text ist natürlich wesentlich länger als die zwei Zeilen, die ich hier beispielhaft angeführt habe und das Zeichen "#" kommt natürlich im Text auch an anderen Stellen vor - entfernt werden soll es dann (und nur dann), wenn es von einem Zeilenwechsel gefolgt wird das heißt, ich muß im Suchstring ganz explizit nach "#" & Zeilenwechsel suchen und durch einen Ersatzstring ersetzen! Mein Problem ist: Ich weiß nicht, wie ich ins VB-Sript den Zeilenwechsel eingeben muß! Die Syntax vbCrLf steht normalerweise für den Zeilenwechsel - funktioniert aber nicht!
Wäre es denn möglich, wenn ich mir einen "Test.txt" , der nur einmal das Zeichen und den Zeilenwechselenthält, erstelle (z.B. nur die obigen 2 Zeilen) und einfach nach deiner Idee diesen "abgespeckten" Text durchsuchen lasse - wenn es möglich wäre mir einfach in eine Datei ausgeben zu lassen, was dierekt hinter dem "#" steht (also den Inhalt dieser gefundene Variable in eine Datei umleiten und hinterher nachsehen, wie der richtige "Code" für den Zeilenwechsel lautet?) ... aber vermutlich wird dabei nur eine leere Datei mit einem einsamen Zeilenwechsel entstehen ... das hilft mir dann auch nicht weiter
... wie gesagt: eigentlich habe ich nur ein "Sprachproblem" , weil ich die richtige Schreibweise für den Zeilenwechsel nicht kenne! So ein Sript wie oben vorgeschlagen (sofern es denn möglich ist) übersteigt derzeit auch meine VB-Kenntnisse weit! Wie müßte sowas denn aussehen?
Bitte warten ..
Mitglied: Steevede
03.07.2009 um 21:44 Uhr
Hallo nochmal an alle, die es interessiert:
Die Lösung ist gefunden!
Ehre und Lob sei Bolle97, der mir den richtigen Lösungsansatz gesendet hat!
Hier nochmals mein Dank und ein ehrfürchtiges "Wow" vor so viel Sachverstand!
Die Lösung war folgende:
Um einen Zeilenwechsel in einem Text zu entfernen, muss der Text zunächst als ganzes eingelesen werden, da sich die Zeichen für den Zeilenwechsel auf zwei Zeilen verteilen : Linefeed am Ende der einen und neuer Zeilenbeginn auf der folgenden Zeile! Beim zeilenweise "durchforsten" der Datei wird natürlich immer nur der String für den Linefeed gefunden - der Zeilenbeginn steht ja erst in der nächsten Zeile! Durchsucht man aber den Text als ganzes, wird der Zeilenumbruch richtig erkannt und entfernt!
Mein funktionierendes Script sieht jetzt so aus:
01.
'Variablen & Konstanten definieren 
02.
Dim fso, objEingabe, objAusgabe, objSuchen 
03.
Dim Pfad, EingabeDatei, AusgabeDatei, Zeile 
04.
 
05.
Suchen_Click() 
06.
 
07.
Private Sub Suchen_Click() 
08.
 
09.
Pfad = "C:\test\" 
10.
EingabeDatei = "test.txt" 
11.
AusgabeDatei = "aus.txt" 
12.
 
13.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
14.
'Objekt erstellen 
15.
Set fso = CreateObject("Scripting.FileSystemObject") 
16.
If fso.FileExists(pfad & EingabeDatei) Then 
17.
Set objEingabe = fso.OpenTextFile(Pfad & EingabeDatei, 1) 
18.
Set objAusgabe = fso.OpenTextFile(Pfad & AusgabeDatei, 2,true) 
19.
Else 
20.
MsgBox "Fehler: Eingabedatei ist nicht vorhanden." 
21.
Exit Sub 
22.
End If 
23.
 
24.
do until objEingabe.AtEndOfStream 
25.
Zeile = objEingabe.ReadAll 
26.
zeile = Replace(zeile, "#" & vbcrlf, "") 
27.
 
28.
objAusgabe.Write (Zeile) 
29.
loop 
30.
 
31.
objEingabe.Close 
32.
objAusgabe.Close 
33.
 
34.
' Eingabedatei löschen 
35.
fso.DeleteFile EingabeDatei, True 
36.
' Ausgabedatei umbenennen durch MoveFile 
37.
fso.MoveFile Ausgabedatei, EingabeDatei 
38.
 
39.
Set objAusgabe = Nothing 
40.
Set objEingabe = Nothing 
41.
Set fso = Nothing 
42.
 
43.
End Sub
Mit diesem Script werden nun alle # die vor einem Zeilenwechsel stehen inklusive Zeilenwechsel gelöscht; also wird:

Blablablablablabla#
Test!
zu
BlablablablablablaTest!

Danke an alle, die mir geantwortet und geholfen haben!!



[Edit Biber] Code in Code-Tags gesetzt.[/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Per Batch Zeichen in Textdatei durch zeilenumbruch ersetzen
Frage von CreamyCewieBatch & Shell3 Kommentare

Hallo, ich habe folgende textdatei (test.txt) "þUEBERþNþSKZþBELþVARTþ3þaaþ5 þacþL þadþ20150385#umbr# UEBERþNþBELDATER" ich brauche nun ein Batch-Script welches mir die gesamte TXT-Datei ...

Batch & Shell
Wie ersetze ich in einer .txt ein Lehrzeichen mit einen Zeilenumbruch?
gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo Zusammen, ich hoffe Ihr könnt mir helfen: folgende Ausgangssituation: Inhalt der .txt-Datei: Vorname Nachname, Abteilungskürzel <Mailadresse>; Vorname Nachname, ...

Batch & Shell
String mit Zeilenumbruch per Bash ersetzen
gelöst Frage von StefanKittelBatch & Shell1 Kommentar

Hallo, ich möchte gerne in einer Datei einen String durch einen anderen ersetzen. Das dumme daran ist, dass ein ...

Batch & Shell
Powershell - In Textdatei suchen und ersetzen
gelöst Frage von Raaja89Batch & Shell5 Kommentare

Hallo Zusammen, ich habe einen Textdatei mit vielen aufeinander folgendenden Leerzeichen und wo an diversen Stellen Überschriften stehen. Ungefähr ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 10 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 14 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 14 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 17 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...