none
Wie den Inhalt eines Array verändern bzw. überspringen??? RRS feed

  • 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

    Donnerstag, 13. März 2014 22:46

Antworten

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

    Freitag, 14. März 2014 01:06
  • 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!!!!!!!

    Freitag, 14. März 2014 04:48
  • 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
    Freitag, 14. März 2014 10:35
  • 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
    Freitag, 14. März 2014 16:23