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

Textdatei Zeilenumbruch bei Sonderzeichen, danach Sonderzeichen löschen und bestimmte Zeilen löschen die mit einem Wert beginnen

Frage Entwicklung Batch & Shell

Mitglied: tekken

tekken (Level 1) - Jetzt verbinden

15.12.2011, aktualisiert 18.10.2012, 3581 Aufrufe, 11 Kommentare

Hallo zusammen,

habe mal wieder ein kleines Problem und hoffe auf eure Hilfe:

Ich habe eine Textdatei, die wie folgt ausschaut (Beispiel):

123, 456789,01/02/03;25,1,27
123, 4512313789,01/02/03;25,1,27
123, 456124,01/02/03;25,1,27
123, 45645489,01/02/03;25,1,27
123, 456454589,01/02/03;25,1,27
131;231145;01/11/166;96,00;1;198@21;23076;0111/611;12,0;72
933, 34241 123132 ,13213131
933, 34241 123132 ,13213131
933, 34241 123132 ,13213131

Das @ Zeichen wurde eingefügt, um zu erkennen, wo ein Zeilenumbruch eingefügt werden soll.
Außerdem sollen die Zeilen, welche mit 933 beginnen vollständig gelöscht werden.

Der Text soll dann am Ende so aussehen:

123, 456789,01/02/03;25,1,27
123, 4512313789,01/02/03;25,1,27
123, 456124,01/02/03;25,1,27
123, 45645489,01/02/03;25,1,27
123, 456454589,01/02/03;25,1,27
131;231145;01/11/166;96,00;1;198
21;23076;0111/611;12,0;72


Also folgende 3 Punkte:

1. Nach einem @ soll ein Zeilenumbruch eingefügt werden
2. Das @ soll gelöscht werden
3. Alle Zeilen mit dem Inhalt beginnend 933 sollen gelöscht werden.

Ich hoffe ihr könnt mir helfen.

LG tekken
Mitglied: TsukiSan
15.12.2011, aktualisiert 18.10.2012
Hallo tekken,

hast du denn keine Anfangsideen?
Hier könntest du bastlas Ansatz nehmen, um die Zeilen zu löschen (bzw. nicht mitzuschreiben) die mit was-auch-immer anfangen.
Und zu deinem 1ten und auch 2ten Punkt kannst du das mal etwas durchackern von bastla.

Wenn dann noch Fragen sind, hilft der Weihnachtsmann

Gruss
Tsuki
Bitte warten ..
Mitglied: tekken
15.12.2011 um 13:41 Uhr
Hi Tsuku,

doch ich habe ein paar Ideen und Vorschläge getestet:

@ECHO off
SETLOCAL enabledelayedexpansion

SET "datei="
SET "ausgabe="
SET "suchzeichen=@"
SET "ersetzungszeichen="

REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ausgabe% (DEL /f %ausgabe% 1>NUL 2>NUL)

REM Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :eof

:ersetzen
REM Das Suchzeichen mit dem Ersetzungszeichen tauschen
SET zeile=!zeile:%suchzeichen%=%ersetzungszeichen%!

REM Ergebnis in die Ausgabedatei schreiben
ECHO !zeile!>>%ausgabe%
GOTO :eof

:eof

Das funktioniert auch recht gut, nur kann ich nur ein Leerzeichen einfügen.
Vllt kann mir noch jemand helfen, gerne auch der Weihnachtsmann.

Gruß tekken
Bitte warten ..
Mitglied: Skyemugen
15.12.2011 um 13:49 Uhr
Aloha,

versuche es doch einmal hiermit:

01.
@echo off & setlocal 
02.
(for /f "tokens=1,* delims=@" %%s in ('findstr /v /B "933," "E:\Skripte\test.txt"') do ( 
03.
	echo %%s 
04.
	set "end=%%t" 
05.
	if defined end echo %%t 
06.
))>%temp%\neu.txt 
07.
pause 
08.
goto :eof
greetz André

P.S.: unsere schöne Codeformatierung ist hier zu finden
edit:
Zitat von TsukiSan:
[Edit]
Skye ist ja auch schon zur Hilfe herbeigeeilt
[/Edit]

Ich fühle mich ohne e immer so leicht wie eine Feder an den einen Asterix-Film denken muss
Bitte warten ..
Mitglied: TsukiSan
15.12.2011 um 13:54 Uhr
Nun gut, du hast dich für Batch entschieden. Das geht auf jeden Fall auch!
Ich allerdings würde es in VBS machen (ist Geschmackssache!)
Um mal mit bastlas Beispiel anzufangen und zu es zurecht zuschneidern:
Zum Zeilen weglöschen kannst du das hier nehmen und auch gleich noch ersetzen (replacen):
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
DateiEin = "D:\Datei.txt" 
03.
DateiAus = "D:\Datei_neu.txt" 
04.
T = Split(fso.OpenTextFile(DateiEin).ReadAll, vbCrLF) 
05.
Set Ausgabe = fso.CreateTextFile(DateiAus, True) 
06.
For Each Z In T 
07.
   Z = replace(Z, "@",  vbcrlf) 
08.
   If Left(Z, 3) <> "933" Then Ausgabe.WriteLine Z 
09.
Next 
10.
Ausgabe.Close
Du musst noch den Pfad und Dateinamen anpassen und das ganze mal Testen (habe ich jetzt nicht gemacht).
Im Prinzip is das die Skizze in VBS

Gruss vom Weihnachtsmann

[Edit]
Skye ist ja auch schon zur Hilfe herbeigeeilt
[/Edit]
Bitte warten ..
Mitglied: tekken
15.12.2011 um 13:57 Uhr
Habs mit [Code][/CODE] probiert hat natürlich nicht geklappt :P Danke für deine Hilfe, funktioniert perfekt.
Wünsche allen Helfern frohe Weihnachten =)

Gruß tekken
Bitte warten ..
Mitglied: TsukiSan
15.12.2011 um 13:59 Uhr
Das böse böse e
Das hat mir diese Woche an anderer Stelle schon mal einen Streich gespielt

hab's geändert!

Gruss
Tsuki
Bitte warten ..
Mitglied: tekken
15.12.2011 um 14:07 Uhr
Hi ihr beiden,

geht doch noch nicht ganz^^
Habe das Problem, dass mehrere @ in einer Zeile vorhanden sind und er jeweils nur 1 Umbruch macht.
Müsste mann dann nochmal ne Schleife machen?

Gruß tekken
Bitte warten ..
Mitglied: Skyemugen
15.12.2011 um 14:14 Uhr
Aloha,

ganz ehrlich: man könnte jetzt nach einem unserer Tutorials mit einer variablen Anzahl an Laufvariablen/Tokens arbeiten und die Schleife weiterstricken ... oder Unterschleifen/-programme entwerfen ...

oder du nimmst TsukiSans VBScript, das auch für deinen erweiterten Fall seine Arbeit ordnungsgemäß verrichtet

greetz André

P.S.: ... kommt davon, wenn man nicht den vollen Umfang in den EP packt ^__^
Bitte warten ..
Mitglied: tekken
15.12.2011 um 14:27 Uhr
Danke für die Antwort.

Habs mal mit TsukiSans VBScript probiert und klappt fast alles hervorragend. Nur das Löschen der Zeilen mit 933 beginnend funktioniert nicht.

Die Zeile schaut bei mir so aus: If Left(Z, 3) <> "21;9" Then Ausgabe.WriteLine Z

Musste die Variable anpassen.

Ja da war ich wohl selber schuld =)

Wär toll wenn ihr mir da noch nen Tipp geben könntet.

Aufjedenfall schonmal vielen Dank.
Bitte warten ..
Mitglied: Skyemugen
15.12.2011 um 14:33 Uhr
Aloha,

hm? Tut mir leid, kann ich nicht nachvollziehen, das VBS tut genau seinen Dienst

If Left(Z, 3) <> "933" Then Ausgabe.WriteLine Z muss schon so bleiben, schließlich werden dort die ersten drei Zeichen einer Zeile von links nur zum Ausgeben deklariert, wenn diese UNGLEICH 933 sind.

greetz André
Bitte warten ..
Mitglied: tekken
15.12.2011 um 14:36 Uhr
Ah ok dann hab ichs verstanden.

Hab es so angepasst und funktioniert:

If Left(Z, 4) <> "933" Then Ausgabe.WriteLine Z

DANKE DANKE DANKE
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
In allen Textdateien eines bestimmten Pfades die Zeilen x bis Ende löschen
gelöst Frage von SchlothBatch & Shell2 Kommentare

Hallo zusammen, ich möchte für alle Textdateien, die unter einem bestimmten Pfad (z.B. Z:\Test\) abgelegt sind, nur die ersten ...

Batch & Shell
Bestimmte Zeile einer Textdatei mit Batch auslesen
gelöst Frage von PinkFLuffyUnicornBatch & Shell2 Kommentare

Hi, ich habe ein kleines Batch Script, welches mir den Status der Firewall ausgeben soll(ob an oder aus) der ...

Entwicklung
Programmierung - In Textdatei an einer bestimmten Stelle einen bestimmten Wert eintragen
gelöst Frage von JimStarEntwicklung1 Kommentar

Guten Morgen zusammen, habe ein kleines Problem: Ich soll ein Script schreiben, welches durch ausführen eine bestimmte Datei bearbeitet. ...

PHP
PHP: Wert nur in bestimmter Zeile erhöhen
gelöst Frage von Sven32PHP7 Kommentare

Hallo Zusammen, ich habe mir ein kleines Script gebastelt, dass mir in einer Textdatei die als Datenbank fungiert einen ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 13 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 14 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 21 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

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

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

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

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...