我需要使用PowerShell脚本更改Property文件。
属性文件中的行如下所示:
max.tree.children.threshold =“这是一个我不知道的数字”
所以我的脚本读取文件并找到这一行,但我不能说他应该覆盖这个号码,因为我不知道这个号码?
我可以设置一个你不知道其中有什么的变量吗?
ForEach($Datei in Get-ChildItem $test1) {
# Get-Content liest eine Texdatei Zeile für Zeile ein
# in der Variablen $Zeilen steht deshalb eine Liste von Zeilen (Array)
$Zeilen = Get-Content -Path $Datei.Fullname
# Die Datei befindet sich nun Komplett im Speicher (in der Variablen $Zeilen)
# deshalb können wir die Datei überschreiben
# Zeilen Zähler, wird nur gebraucht um die erste Zeile zu erkennen
$ZeilenZähler = 1
# jede Zeile abarbeiten
foreach($Zeile in $Zeilen)
{
# Hier findet meine Dateiveränderung statt.
# Beispiel: Alle Buchstaben 'a' durch den Buchstaben 'o' ersetzen
$Zeile = $Zeile -replace "max.tree.children.threshold="Dont know whats here!"","max.tree.children.threshold=300"
#Veränderte Zeile anzeigen lassen
Write-Host "Geänderte Zeile in Datei $($Datei.Fullname)"
Write-Host $Zeile
# Nur bei der ersten Zeile wird die Alte Datei ("leer") neu angelegt (überschrieben)!
If($ZeilenZähler -eq 1 ) {
Out-File -FilePath $Datei.Fullname -InputObject $Zeile -Force
}
Else {
# jede weitere Zeile an die neue erstellte Datei anhängen (Parameter Append)
Out-File -FilePath $Datei.Fullname -InputObject $Zeile -Force -Append
}
# Zeilenzähler hochsetzen
$ZeilenZähler++
}
}
答案 0 :(得分:0)
您可以使用正则表达式轻松完成此操作:
...
$file = $Datei.Fullname
(Get-Content $file) -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300" | Set-Content $file
...
我们首先阅读该文件的内容,并将max.tree.children.threshold=\d+
的所有内容(\d+
将与该行的其余部分匹配,只要它的数字)替换为max.tree.children.threshold=300
。< / p>
答案 1 :(得分:0)
要专门检查数字,您可以使用\d+
检查一个数字,这意味着正则表达式中有一个或多个数字
$Zeile = $Zeile -replace "max.tree.children.threshold=\d+","max.tree.children.threshold=300"