none
ini-Datei nach Variable durchsuchen und entsprechenden Wert ausgeben RRS feed

  • Frage

  • Hallo Zusammen,

    ich habe folgende Herausforderung (für mich :-) ).

    ich habe eine ini-Datei, in der habe ich unter anderem folgende Zeile

    NOTESInipath      C:\lotus\domino

    ich möchte jetzt die ini nach dem String NOTESInipath durchsuchen und mir soll dann C:\lotus\domino ausgegeben werden, damit ich den dann weiter verwenden kann.

    Das Einlesen einer Datei in eine Variable ist ja kein Problem, auch das Suchen nach einem definierten String, aber wie muss ich es anstellen, dass wenn er den String findet, den Text dahinter aus der Zeile nimmt?

    Danke im Voraus für Eure Tipps

    Tobi

    Freitag, 29. Juni 2012 12:01

Antworten

  • Das erledigt der Operator -split für dich :

    Get-Help about_split

    Split benutzt intern Regex um die Strings zu splitten, also könnte man das auch unbequemer direkt mit Regex erledigen

    Ein Beispiel mit -split:

    $IniFile = 'C:\temp\test.txt'
    # Name und Value ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object {-split $_}
    # oder 
    # Nur Namen ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object { (-split $_)[0]}
    # Nur Value ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object { (-split $_)[1]}

    Hier wird ein Array erzeugt und mithilfe von den Indexnummer (0 und 1) werden die einzelnen Werte ausgelesen.

    Du kannst auch die Split Funktion von dem Typ String verwenden, der geht aber nicht so sauber mit leerzeichen um :

    $IniFile = 'C:\temp\test.txt'
    # Name und Value ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object {$_.split()}

    Bei "echten" Ini Files werden gleichheitszeichen verwendet siehe hier:
    http://blogs.technet.com/b/heyscriptingguy/archive/2011/08/20/use-powershell-to-work-with-any-ini-file.aspx



    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Freitag, 29. Juni 2012 12:37

Alle Antworten

  • Das erledigt der Operator -split für dich :

    Get-Help about_split

    Split benutzt intern Regex um die Strings zu splitten, also könnte man das auch unbequemer direkt mit Regex erledigen

    Ein Beispiel mit -split:

    $IniFile = 'C:\temp\test.txt'
    # Name und Value ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object {-split $_}
    # oder 
    # Nur Namen ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object { (-split $_)[0]}
    # Nur Value ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object { (-split $_)[1]}

    Hier wird ein Array erzeugt und mithilfe von den Indexnummer (0 und 1) werden die einzelnen Werte ausgelesen.

    Du kannst auch die Split Funktion von dem Typ String verwenden, der geht aber nicht so sauber mit leerzeichen um :

    $IniFile = 'C:\temp\test.txt'
    # Name und Value ausgeben
    Get-Content $IniFile | Where-Object { $_ -like "*NOTESInipath*" } | ForEach-Object {$_.split()}

    Bei "echten" Ini Files werden gleichheitszeichen verwendet siehe hier:
    http://blogs.technet.com/b/heyscriptingguy/archive/2011/08/20/use-powershell-to-work-with-any-ini-file.aspx



    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Freitag, 29. Juni 2012 12:37
  • Hallo Peter,

    mit split hatte ich auch schon , ich will mal sagen, rumexperimentiert, aber letztendlicht doch nichts Brauchbares rausbekommen. Jetzt hab ich es auch verstanden und kann damit arbeiten.

    Vielen Dank für die schnelle Hilfe.

    Schönes WE

    Tobi

    Freitag, 29. Juni 2012 13:01