첫 번째 줄의 줄은 파일에서 읽히고 두 번째 줄의 줄로 바뀌므로 다른 줄이 사용됩니다. 나는 대본을 만들었지 만 왜 효과가 없는지 이해하지 못합니다.파일의 여러 줄 바꾸기
$OldStrings = @(
"desktopwidth:i:1440",
"desktopheight:i:900",
"winposstr:s:0,1,140,60,1596,999"
)
$NewStrings = @(
"desktopwidth:i:1734",
"desktopheight:i:990",
"winposstr:s:0,1,50,7,1800,1036"
)
$LinesArray = Get-Content -Path 'C:\temp\My Copy\Default.rdp'
$LinesCount = $LinesArray.Count
for ($i=0; $i -lt $LinesCount; $i++) {
foreach ($OldString in $OldStrings) {
foreach ($NewString in $NewStrings) {
if ($LinesArray[$i] -like $OldString) {
$LinesArray[$i] = $LinesArray[$i] -replace $OldString, $NewString
Write-Host "`nline" $i "takes on value:" $LinesArray[$i] "`n" -ForegroundColor Gray
}
}
}
}
아마도 파일이 전혀 읽히지 않는 이유 일 것입니다.
스크립트를 실행 한 후에, 나는 당신이 두 번 문자열 배열을 통해보고하는 경우에만
line 2 takes on value: desktopwidth:i:1734 line 3 takes on value: desktopwidth:i:1734 line 5 takes on value: desktopwidth:i:1734
배열의 후행 백틱은 필요하지 않습니다. 또한'-replace'가 정규 표현식 연산자임을주의하십시오. – Matt
@Matt 그 사람들이 어떻게 거기에 있는지 모르겠습니다. 나는 그것들을 추가하지 않았을 것이고 나는 원래의 대답에서 내가 하에게서 베낀 것이 아니었다. –
정규식 연산자를 사용하지 않으려면 다음을 사용하십시오. $ LinesArray [$ i] = $ LinesArray [$ i] .Replace ($ OldStrings [$ j], $ NewStrings [$ j]) ' –