daniel3

Textdatei auf Rendundanz untersuchen und ändern

Hallo zusammen,
Ich müsste mit einer Bat oder kleineren Programm, eine txt Datei auf Rendundanz untersuchen und ausbessern.
z.B.
101 Test
205 Test2
101 Test3
306 Test4

Ich müsste die Datei so ändern das zum Schluss folgendes rauskommt:

101 Test
205 Test2
1011Test3
306 Test4

Also statt dem Leerzeichen eine 1
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 364740

Url: https://administrator.de/forum/textdatei-auf-rendundanz-untersuchen-und-aendern-364740.html

Ausgedruckt am: 14.07.2025 um 18:07 Uhr

135333
135333 14.02.2018 aktualisiert um 11:11:49 Uhr
Powershell
$arr =@()
(gc 'c:\datei.txt') | %{  
    $line = $_.split(' ',2)  
    If ($line -in $arr){$line + '1' + $line[1]}else{$arr += $line;$_}  
} | sc 'c:\datei_neu.txt'  
Gruß Snap
Daniel3
Daniel3 14.02.2018 um 11:05:50 Uhr
Hallo Snap,
Kannst du mir das bitte erklären, verstehe das nicht.
135333
135333 14.02.2018 um 11:11:29 Uhr
135333
135333 14.02.2018 aktualisiert um 11:35:40 Uhr
Also nochmal mit Erklärungen, dann sollte klar sein was passiert:
# definiert ein leeres Array
$arr = @()
# liest Textdatei ein und baut eine Schleife um die Zeilen zu durchlaufen
(gc 'c:\datei.txt') | %{  
    # splitet die Zeile anhand der Leerzeichen zwei mal
    $line = $_.split(' ',2)  
    # Wenn Nummer bereits im Array existiert gebe die Daten mit einer 1 dazwischen aus ansonsten füge die Nummer dem Array hinzu und gebe die Zeile unverändert aus
    If ($line -in $arr){$line + '1' + $line[1]}else{$arr += $line;$_}  
} | sc 'c:\datei_neu.txt' # schreibt die Ausgaben in eine neue Datei  
Daniel3
Daniel3 14.02.2018 um 11:36:05 Uhr
Sorry aber bei mir funktioniert das nicht face-sad
mir erstellts zwar die neue Datei, aber diese bleibt unverändert.
135333
135333 14.02.2018 um 11:39:18 Uhr
Dann hast du's falsch kopiert, also nochmal kopieren. Läuft, getestet.
Daniel3
Daniel3 14.02.2018 um 11:40:35 Uhr
Jetzt hats funktioniert
Danke
Daniel3
Daniel3 14.02.2018 um 11:54:48 Uhr
Hallo Snap,
Vielen Dank nochmal.
Ich müsste nun nochmal das geiche Rückgäng machen also von
so:
101 Test
205 Test2
1011Test3
306 Test4
nach
so:
101 Test
205 Test2
101 Test3
306 Test4

Hast du da auch was?
Danke in Vorraus
135333
135333 14.02.2018 aktualisiert um 12:07:30 Uhr
Nana, hast du kein Backup gemacht face-big-smile. Das gibt heiße Öhrchen face-smile

(gc 'c:\test.txt') -replace '^(.{3})(1)(.*)','$1 $3' | sc gc 'c:\test.txt'  
Daniel3
Daniel3 14.02.2018 um 13:04:06 Uhr
Perfekt danke bist der Beste face-smile
Daniel3
Daniel3 14.02.2018 um 14:37:13 Uhr
Hast du auch einen Lösung bezüglich, ich muss die Skript auf einen Windows 7 PC zum laufen bekommen.
Da ist Powershell v1 installiert und da funktionierts nicht.
Funktioniert nur bei Windows 10
135333
135333 14.02.2018 aktualisiert um 14:57:04 Uhr
Powershell 1 gibt es nicht mehr!

In PS 2.0 wie es auf W7 installiert ist nutze statt dem -in Operator den -contains Operator.
Also
if ($arr -contains $line)
Daniel3
Daniel3 14.02.2018 um 15:00:50 Uhr
Anbei das Bild
2018-02-14 15_00_09-vorführ_2018_yuno - teamviewer
135333
135333 14.02.2018 aktualisiert um 15:04:11 Uhr
Siehe bitte meinen letzten Post!
Daniel3
Daniel3 14.02.2018 um 17:17:40 Uhr
Also bei mir funktionierst jetzt auch bei Windows 7 wenn ich Powershell öffne und den Text reinkopiere.
Wenn ich aber den Code als test.ps1 speichere und diese mit Powershell ausführe funktioniert es nicht. face-sad
135333
135333 14.02.2018 um 18:11:51 Uhr
Stichwort Executionpolicy
Daniel3
Daniel3 15.02.2018 um 15:04:34 Uhr
ich raffs nicht face-sad
Daniel3
Daniel3 15.02.2018 um 16:23:13 Uhr
Ich bekomme immer folgenden Fehler. auch nach der Set-ExecutionPolicy
2018-02-15 16_20_56-vorführ_2018_yuno - teamviewer
135333
135333 15.02.2018 aktualisiert um 16:44:04 Uhr
Tja, das sagt dir doch eindeutig das du die Executionpolicy auf Signieren festgelegt hast oder das eine GPO bei dir das Ausführen Unsignierter Sktipte verbietet und nicht auf RemoteSigned oder Unrestricted festgelegt ist.

Also administrative Powershell-Konsole öffnen und
Set-Executionpolicy Unrestricted
Eintippeln.
Dann cmd öffnen und
Powershell -File "c:\script.ps1"  
eintippeln, feeeedich, oder Bypass machen
Powershell -Executionpolicy Bypass -File "c:\script.ps1"  
Das man das noch nicht mal ergoogeln kann ist schon sehr schwach!

I'm out a here.
Gruß snap