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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 364740
Url: https://administrator.de/contentid/364740
Printed on: April 24, 2024 at 04:04 o'clock
19 Comments
Latest comment
Powershell
Gruß Snap
$arr =@()
(gc 'c:\datei.txt') | %{
$line = $_.split(' ',2)
If ($line -in $arr){$line + '1' + $line[1]}else{$arr += $line;$_}
} | sc 'c:\datei_neu.txt'
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
Dann hast du's falsch kopiert, also nochmal kopieren. Läuft, getestet.
Nana, hast du kein Backup gemacht . Das gibt heiße Öhrchen
(gc 'c:\test.txt') -replace '^(.{3})(1)(.*)','$1 $3' | sc gc 'c:\test.txt'
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
In PS 2.0 wie es auf W7 installiert ist nutze statt dem -in Operator den -contains Operator.
Also
if ($arr -contains $line)
Siehe bitte meinen letzten Post!
Stichwort Executionpolicy
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
Eintippeln.
Dann cmd öffnen und
eintippeln, feeeedich, oder Bypass machen
Das man das noch nicht mal ergoogeln kann ist schon sehr schwach!
I'm out a here.
Gruß snap
Also administrative Powershell-Konsole öffnen und
Set-Executionpolicy Unrestricted
Dann cmd öffnen und
Powershell -File "c:\script.ps1"
Powershell -Executionpolicy Bypass -File "c:\script.ps1"
I'm out a here.
Gruß snap