chrism73
Goto Top

Textdateibearbeitung per Skript

Hallo ich muss öfters von hand aus einer Textdatei die nur Zahlen, kommas und leerstellen enthält die Zeilen vergleichen und gegebenenfalls doppelte löschen, solange bis nur noch einzigartige Zeilen in der Datei stehen.
Wenn doppelte Zeilen vorhanden sind, stehen sie direkt untereinander. Es können dann auch mehrere doppelte Zeilen sein, also auch mal 5 mal die gleiche.
Kann man sowas per Skript lösen?

Content-Key: 57472

Url: https://administrator.de/contentid/57472

Printed on: April 25, 2024 at 17:04 o'clock

Member: miniversum
miniversum Apr 24, 2007 at 14:11:17 (UTC)
Goto Top
Versuchs mal so:
@echo off & setlocal enabledelayedexpansion
set srcfile="alle.txt"  
set destfile="nureinzelne.txt"  
set "tempvar="  

if exist %destfile% del %destfile%
FOR /F "delims=" %%A in ('type %srcfile%') do if not [%%A]==[!tempvar!] (  
echo %%A>>%destfile%
set tempvar=%%A
)

miniversum
Member: ChrisM73
ChrisM73 Apr 24, 2007 at 14:20:55 (UTC)
Goto Top
sorry hat leider nicht funktioniert, dei Dateien sehen genau gleich aus.
Hatte aber auch falsche Angaben gemacht, das File enthält auch Buchstaben und Punkte.
probierst dus bitte nochmal?
Member: miniversum
miniversum Apr 24, 2007 at 14:28:32 (UTC)
Goto Top
Sollte egal sein ob es Buchstaben enthällt.
Bei mir läuft es so.
Kannst du vielleicht mal nen Auszug von so ner Datei posten?

miniversum
Member: ChrisM73
ChrisM73 Apr 25, 2007 at 06:04:40 (UTC)
Goto Top
aus Datenschutzrechtlichen Gründen darf ich sie leider nicht posten, würde aber so aussehen:

0256401,N074568,074567899,1,024586,M694767.000,02,155,01,930,11,874,11
0256401,N074568,074567899,1,024586,M694767.000,02,155,01,930,11,874,11 <--löschen
0374502,M078456,084646488,2,034587,M632457.001,03,178,02,931,12,837,12
1354466,M467788,466468666,1,045587,M656844.000,02,184,01, ,
1354466,M467788,466468666,1,045587,M656844.000,02,184,01, , <--löschen
...
Member: Biber
Biber Apr 25, 2007 at 06:18:36 (UTC)
Goto Top
Moin ChrisM73,

IMHO funktioniert miniversums Lösung.

Ich würde die nur ganz geringfügig erweitern mt dem SORT-Befehl, aber sonst...
Bie mir bleiben 3 Zeilen der Textdatei übrig, wenn ich folgenden Schnipsel laufen lasse:
@echo off & setlocal enabledelayedexpansion

set srcfile="alle.txt"  
set destfile="nureinzelne.txt"  
set "tempvar="  

if exist %destfile% del %destfile%
FOR /F "delims=" %%A in ('type %srcfile%^|sort') do (  
if not [%%A]==[!tempvar!] (
    echo %%A>>%destfile%
    set tempvar=%%A
))

Gruss
Biber
Member: ChrisM73
ChrisM73 Apr 25, 2007 at 06:50:52 (UTC)
Goto Top
Hallo also sorry ich habe mich girrt, die Nummern sind nicht ganz gleich, sondern unterscheiden sich
bei er 2ten M Nummer, sieht also so aus:

0256401,N074568,074567899,1,024586,M694767.000,02,155,01,930,11,874,11
0256401,N074568,074567899,1,024586,M625877.000,02,155,01,930,11,874,11 <--löschen
0374502,M078456,084646488,2,034587,M632457.001,03,178,02,931,12,837,12
1354466,M467788,466468666,1,045587,M656844.000,02,184,01, ,
1354466,M467788,466468666,1,045587,M685474.000,02,184,01, , <--löschen
Member: miniversum
miniversum Apr 25, 2007 at 08:13:59 (UTC)
Goto Top
Also soll nur im vorderen Teil nach gleichen gesucht werden?
Also nur der Bereich :
0256401,N074568,074567899,1,024586,
0256401,N074568,074567899,1,024586,
0374502,M078456,084646488,2,034587,
1354466,M467788,466468666,1,045587,
1354466,M467788,466468666,1,045587,

Hier würden nur die ersten 35 Zeichen verglichen:
@echo off & setlocal enabledelayedexpansion

set srcfile="alle.txt"  
set destfile="nureinzelne.txt"  
set "tempvar="  

if exist %destfile% del %destfile%
FOR /F "delims=" %%A in ('type %srcfile%^|sort') do (  
set aktvar=%%A
set aktvar=!aktvar:~0,35!
if not [!aktvar!]==[!tempvar!] (
    echo %%A>>%destfile%
    set tempvar=!aktvar!
))
miniversum
Member: ChrisM73
ChrisM73 Apr 25, 2007 at 12:02:47 (UTC)
Goto Top
Hey super Miniversum, jetzt klappt es, vielen dank für deine Hilfe.