2016-08-07 5 views
0

Ich habe eine Eigenschaft properties.txt-Datei, und ich habe die folgenden Werte in esWie Werte der Eigenschaften lesen Datei in dem Powershell-Skript

filename = atc 
extension = zip 

path = D:\root 
and so on .. 

so weiter ich einige Eigenschaften in der Textdatei, die ich will diese Werte in der .ps1-Datei verwenden

zB wenn ich den Pfad in der .ps1-Datei verwenden möchte ich die .ps1-Datei aus der Datei properties.txt lesen. Ich versuche oben Code, aber es funktioniert nicht. Ich wollte alle Werte lesen

$props_file = Get-Content "D:\code" 
$props = ConvertFrom-StringData ($properties.txt) 

kann mir bitte jemand helfen?

+1

verwenden definieren "funktioniert nicht." Was für ein * genaues * Verhalten hast du? Welches Verhalten wünschen Sie? –

+0

Beachten Sie, dass in einer Eigenschaftendatei ein einzelnes '\' ein Escape-Zeichen ist. Sie benötigen also ein doppeltes '\', damit es für Java und einige andere Sprachen gültig ist. – dragon788

Antwort

1

Wie wäre es damit?

$fileContents = get-content c:\path\properties.txt 

$properties = @{} 

foreach($line in $fileContents) 
{ 
    write-host $line 
    # ,2 tells split to return two substrings (a single split) per line 
    $words = $line.Split('=',2) 
    $properties.add($words[0].Trim(), $words[1].Trim()) 
} 

$properties 

Dann können Sie die Werte wie diese

$properties.Extension 
$properties.path 
+0

Die Herausforderung bei der Verwendung von Split besteht darin, dass mehrere '=' in einer Zeile vorhanden sein können, z. B. für eine verschachtelte URL, die eine Abfragezeichenfolge mit zusätzlichen 'value = someval'-Anweisungen enthält. Die Syntax, die Sie zum Abfragen der Werte angegeben haben, sollte mit der Art funktionieren, wie er die Datei mit 'ConvertFrom-StringData' analysiert hat. – dragon788

+0

@ dragon788 Ich genehmigte Ihre Bearbeitung, um ein Argument zu $ ​​line.Split() hinzuzufügen. –

Verwandte Themen