Benutzer mit den meisten Antworten
Wie den Inhalt eines Array verändern bzw. überspringen???

Frage
-
Hallo zusammen,
seit kurzem beschäftige ich mich mit der mächtigen Powershell.
Ich komme aber bei einfach bei folgendem Problem nicht weiter:
Also ich lese a den Inhalt zweier Textdateien in jeweils ein Array ein und vergleiche den Inhalt der beiden Arrays.
Wenn es nun eine Änderung festgestellt wird, soll diese ausgegeben werden.
Das funktioniert soweit auch alles...
If ([string]::Compare((Get-Content $AlterParameter),(Get-Content $NeuerParameter),$True)) { $Aenderung = @(Compare-Object (Get-Content $AlterParameter) (Get-Content $NeuerParameter) -PassThru) foreach ($Zeile in $Aenderung) { Write-Host $Zeile } }
Die Ausgabe sieht in etwa so aus:
1. NeuerParameter
2. NeuerParameter
3. NeuerParameter
1. AlterParameter
2. AlterParameter
3. AlterParameter
Wie schaffe ich es nun die Ausgabe follgendermaßen aussehen zu lassen:
1. NeuerParameter
1. AlterParameter
2. NeuerParameter
2. AlterParameter
3. NeuerParameter
3. AlterParameter
Ich hoffe ich nerve euch nicht mit so einer Frage aber ich komme hier einfach nicht weiter...
Vielen dank schonmal
Antworten
-
Hallo,
so auf die schnelle, du solltest Dir mal die Hilfe fuer get-content ansehen und aufmerksam durchlesen.
get-help get-content -full
Beste Gruesse
brima- Als Antwort markiert Alex Pitulice Dienstag, 1. April 2014 12:39
-
Hallo Mitsch86
PowerShell ist für diese Aufgabe nicht vorgesehen!
Dies ist zwar mit PowerShell auch möglich, man muss aber sehr viel Programmieren dafür!Was ist wenn der Text der Verändert wurde mehrere Zeilen Verändert hat?
Bitte nutze ein geeignetes Programm dafür:
http://www.google.de/search?q=windows+compare+text+files
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort markiert Alex Pitulice Dienstag, 1. April 2014 12:39
Alle Antworten
-
Ich habe es nun selbst hinbekommen:
If ([string]::Compare((Get-Content $AlterParameter),(Get-Content $NeuerParameter),$True)) { $Aenderung = @(Compare-Object (Get-Content $AlterParameter) (Get-Content $NeuerParameter) -PassThru) $AnzahlAenderung = $Aenderung.count $AenderungVariabel = $AnzahlAenderung / 2 $AenderungKonstant = $AnzahlAenderung / 2 $cnt = 0 foreach ($Zeileneu in $Aenderung) { if ($AenderungVariabel -ge 1) { $2Fehler = $AenderungKonstant + $cnt Write-Host $Zeileneu Write-Host $Aenderung[$2Fehler..$2Fehler] --$AenderungVariabel; ++$cnt; } } }
Würdet ihr das anderst lösen? Ich bin gerne für Verbesserungen offen. Möchte schließlich noch was lernen....
Jetzt hab ich noch ne andere Frage:
Ist es möglich in eine Textdatei also (.doc .txt .dat ..... ) einen farbigen String einzufügen?
Mir schwebt vor die Parameter zu vergleichen und dann die unterschiede farblich zu markieren und diese wiederum in ein Logfile schreiben. Das mit dem Logfile habe ich hinbekommen. Ist das mit der Farbe möglich? Das ich in die Konsole farbig schreiben kann, weiß ich inzwischen aber geht das auch in eine Datei?
MfG
-
Ich glaub nachdem was ich gelesen habe kann ich mir das abschminken mit dem farbigen Text in ein .doc zu schreiben. Jetzt habe ich aber schon wieder das nächste Problem :-)
Undzwar habe ich 2 Strings die ich gerne bitweise vergleichen möchte und dann nur den unterschied darstellen möchte.
Ich könnte mir auch vorstellen die Strings in der Konsole darzustellen. Dabei soll nur ein String dargestellt werden. Bei diesem soll dann der Unterschied zum Vergleichsstring farbig markiert werden.
follgendes geht schonmal nicht:
$neu = [string]$Fehler $alt = [string]$Change[$Fehler2..$Fehler2] $test = [string](Compare-Object (Get-Content $neu) (Get-Content $alt) -PassThru)
Ich erhalte follgenden Fehler: "Get-Content : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than".
Was ich dazu sagen muss ist, dass $neu und $alt arrays waren und ich diese in strings umgewandelt habe.
Wenn ich mir den Inhalt von $neu und $alt anschaue dann passt dass alles aber ich schaffe es nicht diese zu vergleichen. Mir ist auch klar das dieses Beispiel nicht meine gewünschte Funktion abbildet, jedoch komm ich hier schon nicht mehr weiter.
Ich bitte um HilFFFFFFEEEEEEEEEE!!!!!!!
-
Hallo,
so auf die schnelle, du solltest Dir mal die Hilfe fuer get-content ansehen und aufmerksam durchlesen.
get-help get-content -full
Beste Gruesse
brima- Als Antwort markiert Alex Pitulice Dienstag, 1. April 2014 12:39
-
Hallo Mitsch86
PowerShell ist für diese Aufgabe nicht vorgesehen!
Dies ist zwar mit PowerShell auch möglich, man muss aber sehr viel Programmieren dafür!Was ist wenn der Text der Verändert wurde mehrere Zeilen Verändert hat?
Bitte nutze ein geeignetes Programm dafür:
http://www.google.de/search?q=windows+compare+text+files
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort markiert Alex Pitulice Dienstag, 1. April 2014 12:39