Wie kann ich Dateien mit Powershell vergleichen?
Hallo Ich bräuchte ein Powershellskript das Textdateien miteinander vergleicht. Also wenn z. B. in Textdatei 1 "a, b, c und d" steht und in Textdatei 2 steht "a und c" und in Textdatei 3 steht "b" und d ist in keiner der zwei listen nochmal zu finden. Dann wollte ich das er immer die Textdatei 1 nimmt und die mit den anderen vergleicht und wenn wie oben im Beispiel z. B. "a" zweimal vorhanden ist egal ob des in Textdatei 1 und 2 oder in Textdatei 1 und 3 ist dann ist alles in ordnung und er soll nichts weiter machen aber wenn wie oben z. B. "d" nur einmal vorkommt in Textdatei 1 dann soll es diesen wert ausgeben und sagen das der nicht gefunden wurde oder halt nur einmal vorhanden ist. Ich hab leider noch nie was mit powershell gemacht daher kenn ich mich damit überhaupt nicht aus und wäre sehr dankbar wenn mir jemand das ganze skript erstellen könnte da ich es unbedingt brauche weil ich mich wiegesagt überhaupt nicht mit powershell auskenne.
Danke schon mal im Voraus. :-)
2 Antworten
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.
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".
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.
Haste vll. noch n Beispiel wie die Liste aufgebaut ist oder sind das einfach Servernamen die untereinander geschrieben wurden?
Bsp.:
serv01
serv02
serv03
usw.
und ja die servernamen stehen in der textdatei einfach untereinander :-)
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 ;)
Das hört sich so konfus an, dass ich das lieber in einem Programm umsetzen würde.
Ja kann sein aber dann steh vor dem selben Problem wie jetzt ich weiß nicht wie das geht :-| :-)
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. :-)