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

Letzen 15 Zeichen oder die ersten 34 Zeichen einer Zeile in .txt löschen

Frage Entwicklung Batch & Shell

Mitglied: bodor21

bodor21 (Level 1) - Jetzt verbinden

30.10.2009 um 10:26 Uhr, 6049 Aufrufe, 6 Kommentare

Hallo,

es geht mal wieder um Zeilen per Patch zu editieren, die Suchfunktion ergab leider zu meinem Problem keine Lösung.

Gruß

bodor21

Ich möchte per Patch Datei die letzten 15 Zeichen jeder Zeile löschen.
Es geht aber auch alles ab dem 34 Zeichen jeder Zeile zu löschen, je nachdem was einfacher ist.

Die Textdatei test.txt hat ca. 200 Zeilen
Der Zeilenaufbau ist wie folgt:

Code:Polizei=NOTRUF110,Region=1540,NR=27873,Breite=E362CC0;
Code:Polizei=NOTRUF110,Region=1531,NR=27873,Breite=E362C00C0;
Code:Polizei=NOTRUF110,Region=134,NR=27873,Breite=E361CC0;
.
.
.

Hinter dem letzten Zeichen ; sind noch 2 Leerzeichen, die man hier leider nicht sieht.
Die Zeilenlänge variert um max. 4 Zeichen
Mitglied: Marwed
30.10.2009 um 11:06 Uhr
Hallo,

Schema:
- Datei zeilenweise einlesen
- Prüfen, ob sie zu filtern ist (falls nötig)
- Filtern und Ausgabe

Verzögerte Variablenerweiterung aktivieren: SETLOCAL ENABLEDELAYEDEXPANSION

Beispiele:
Zeile Einlesen: for /F "tokens=*" %%i in ( 'type %SFILE%' ) do (
Prüfen: for /F "tokens=*" %%j in ( 'echo "%%i" ^| findstr /P "Name"' ) do (
Zeile in Variable: set EINGABEZEILE=%%i
Filtern: set AUSGABEZEILE=!EINGABEZEILE:~45,-11!
(Beginne beim 46. Zeichen (Offset=45) von links und übernimm alle Zeichen bis auf die letzten 11.)
Ausgabe: ... in der mitleren Schleife mit >> in Ausgabedatei ablegen.

Weitere Einzelheiten findest Du auf Deinem eigenen Rechner in der Befehlszeilenrefenz (C:\WINDOWS/Help/ntcmds.chm)

Gruß,
Marwed
Bitte warten ..
Mitglied: Farbauti
30.10.2009 um 13:16 Uhr
Hallo,

wenn ich's richtig verstanden habe, willst du den Eintrag "Breite...." löschen.
Da deine Datei schon so hübsch aufbereitet ist, bieten sich die Kommas als Trennzeichen an:

01.
set INFILE=test.txt 
02.
set OUTFILE=testout.txt 
03.
FOR /F "eol=; tokens=1,2,3 delims=, " %%i in (%INFILE%) do ( 
04.
	echo %%i,%%j,%%k >> %OUTFILE% 
05.
)
Mit %%i = Code:Polizei=NOTRUF110
%%j = Region=...
%%k = NR=...

Gruß, Farbauti.
PS: Batch und Patch sind zwei verschiedene Sachen ;)
Bitte warten ..
Mitglied: bastla
30.10.2009 um 15:16 Uhr
Weitere Einzelheiten findest Du auf Deinem eigenen Rechner in der Befehlszeilenrefenz (C:\WINDOWS/Help/ntcmds.chm)
... und (wenn Du das wirklich so machen wolltest) schau Dir auch gleich "setlocal enabledelayedexpansion" an ...
[Edit] @Marwed: Entweder hatte ich Deinen Hinweis zu "delayedExpansion" überlesen (ist ja auch so unscheinbar formatiert ), oder Du hast diesen erst nachträglich hinzugefügt - anyhow, doppelt hält eh besser ... [/Edit]
Sinnvoller scheint allerdings auch mir die von Farbauti angesprochene Möglichkeit, die Zeile anhand der enthaltenen Kommata zu zerlegen, wobei mir allerdings das angestrebte Ziel noch nicht ganz klar ist: Alles ab dem 34. Zeichen zu löschen bringt auf Basis der dargestellten Beispielzeilen definitiv andere Ergebnisse als das Löschen der letzten 15 Zeichen - wie sollen daher die bearbeiteten Zeilen tatsächlich aussehen?

Grüße
bastla
Bitte warten ..
Mitglied: Marwed
30.10.2009 um 17:59 Uhr
.. stimmt, so its's eleganter, kürzer !

WENN die Zeilen alle so schön fein hübsch gleich sind ...
Falls nicht, ist meine (umständlichere) Methode flexibler ...
Eben je nach Bedarf.
Marwed
Bitte warten ..
Mitglied: bodor21
30.10.2009 um 22:32 Uhr
Hallo,

@all
das mit den letzten 15. Zeichen oder ab den 34 Zeichen löschen war nur ein Beispiel um den Batch universal zu gestalten.
So kann ich ihn vielleicht einfach nach meinen Dateien anpassen, die ich bearbeiten will.
Ich hatte vor Monaten schon einmal eine ähnliche Anfrage zu Thema gestellt, doch die Lösung war mir im Nachhinein zu umständlich.
Jetzt bin ich mal wieder an den Thema dran und hab mir überlegt, das es mir reichen würde automatisch zu kürzen und den Rest, der ist dann in Jeder Zeile gleich, mit der Ersetzfunktion des Editors zu bearbeiten.
Leider bin ich ein absoluter Anfänger in Batchprogrammierung und kann nicht viel Zeit zum Erlernen der Batchprogrammierung stecken, wenn ich nur 2 oder 3 Batchfiles in 2 Jahren benötige. Sorry wenn ich euch dafür bemühe und mir deswegen böse sein könntet.
Den Unterschied zwischen Patchen und Batchdatei kenne ich genau, nur meine Finger können das beim Schreiben nicht immer trennen )

Also aus

Code:Polizei=NOTRUF110,Region=134,NR=27873,Breite=E361CC0;

soll

Code:Polizei=NOTRUF110,Region=134;

werden.
Ja man kann auch sagen ab dem 2. Komma jede Zeile abschneiden und ein Semikolon als letztes Zeichen setzten.
Wenn das noch einfacher ist, dann prima, bin ich nur nicht drauf gekommen.

Ich hoffe die Sache etwas entwirrt zu haben.

Viele Grüße

Bodor21
Bitte warten ..
Mitglied: bastla
31.10.2009 um 08:19 Uhr
Hallo bodor21!

Die Trennzeichen-Variante ist sicherlich flexibler, da eben die Zeichenanzahl dabei auch unterschiedlich sein kann. Unter Berücksichtigung der Tatsache, dass die Ausgabe immer an die Zieldatei angefügt wird, sollte eine ev bereits vorhandene Datei vorweg noch gelöscht werden - das Ganze sähe dann etwa so aus:
01.
@echo off & setlocal 
02.
set "INFILE=D:\Nur ein Test\test.txt" 
03.
set "OUTFILE=D:\Nur ein Test\testout.txt" 
04.
 
05.
del "%OUTFILE%" 2>nul 
06.
FOR /F "usebackq tokens=1-2 delims=," %%i in ("%INFILE%") do echo %%i,%%j;>>"%OUTFILE%"
Wenn es tatsächlich einmal nötigt sein sollte, anhand der Zeichenanzahl aufzuteilen, hast Du mit Marweds Vorschlag eine Basis dafür.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...