Wie kann ich Dateien mit Powershell vergleichen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hast du irgendwas konkreteres als einfache Buchstaben >_>

Prinzipiell kann ich mich da später mal dransetzen, allerdings ist das halt relativ eingeschränkt in dem Fall.

Oder gibts keinen konkreten Anwendungsfall und es ist einfach zum Ausprobieren da?

N Ansatz, falls du dich dran versuchen willst:

Erstmal brauchste alle Textdateien im Ordner. Dazu brauchste Get-Childitem.

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-6

Wenn ich mich recht entsinne gibt es n Parameter "Where", allerdings pipe ich es meist einfach.

$files = Get-Childitem | where{$_.Extension -eq ".txt"}

Damit haste alle Textdateien im aktuellen Arbeitsverzeichnis. Die kannste jetzt mit einer foreach-Schleife durchiterieren.

Um den Inhalt der Textdateien auszulesen benutzte "Get-Content".

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-6

z.B.

$cont = Get-Content $files[0]

Davon bekommste ein Stringarray zurück, was du in Zeichen zerlegen kannst

Die einzelnen Zeichen kannste folgendermaßen abfragen:

$cont[0][0]

Das wäre beispielsweise das erste Zeichen in der ersten Textdatei.


Lukas2806 
Fragesteller
 23.03.2018, 10:10

Ja das war jetzt nur ein beispiel. Eigentlich soll dieses skript Namen bzw. servernamen miteinander vergleichen und diese müssen halt 2x vorhanden sein in einer der anderen textdateien wie oben schon gesagt ein mal in der Hauptdatei (z. B. Textdatei 1) und dann in Textdatei 2 oder 3 das ist egal wo es das zweite mal steht aber es muss halt neben der hauptliste nochmal wo stehen und wenn dies nicht der Fall ist und der servername nur in der Haupttextdatei zufinden ist soll das skript dies eben ausgeben und sagen das der wert bzw. der entsprechende name nicht oder halt nur 1x vorhanden ist.

Danke schonmal das wäre sehr toll wenn du das machen könntest. :-)

0
Etter  23.03.2018, 13:02
@Lukas2806

Haste vll. noch n Beispiel wie die Liste aufgebaut ist oder sind das einfach Servernamen die untereinander geschrieben wurden?

Bsp.:

serv01
serv02
serv03
usw.
0
Lukas2806 
Fragesteller
 24.03.2018, 12:44
@Etter

nein das ist egal wie die aufgebaut ist die können auch einfach untereinander stehen wie du es da gemacht hast :-)

0
Lukas2806 
Fragesteller
 24.03.2018, 12:47
@Lukas2806

und ja die servernamen stehen in der textdatei einfach untereinander :-)

0
Etter  25.03.2018, 15:36
@Lukas2806

So ich hab da mal was produziert ^^

$files = Get-ChildItem | where{$_.Extension -eq ".txt"}
$basearr = Get-Content $files[0]
$out = $null
$equalBool = $true

for($i=1;$i -lt $files.Length;$i++){
    $out+=Get-Content $files[$i]
}

$basearr | where{$out -notcontains $_}

Probier damit n bissl rum, ich hoffe dass es hilft ;)

1

Das hört sich so konfus an, dass ich das lieber in einem Programm umsetzen würde.

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

Lukas2806 
Fragesteller
 22.03.2018, 15:49

Ja kann sein aber dann steh vor dem selben Problem wie jetzt ich weiß nicht wie das geht :-| :-)

0