Я хочу найти и заменить определенную строку в нескольких файлах. Некоторые из этих файлов могут быть относительно большими, поэтому я использую класс StreamReader
из пространства имен System.IO
.Используйте StreamWriter() для записи в тот же файл, что и StreamReader()
Проблема заключается в том, что я не хочу писать новые значения в новый файл (это то, что у меня есть в настоящее время). Я хочу просто «обновить» текущие файлы.
$currentValue = "B";
$newValue = "A";
# Loop through all of the directories and update with new details.
foreach ($file in $Directories) {
$streamReader = New-Object System.IO.StreamReader -Arg "$file"
$streamWriter = [System.IO.StreamWriter] "$file"
# Switching $streamWriter to the below works.
# $streamWriter = [System.IO.StreamWriter] "C:\Temp\newFile.txt"
while($line = $streamReader.ReadLine()){
# Write-Output "Current line value is $line";
$s = $line -replace "$currentValue", "$newValue"
# Write-Output "The new line value is $s"
$streamWriter.WriteLine($s);
}
# Close the streams ready for the next loop.
$streamReader.close();
$streamWriter.close();
}
Write-Output "The task has complete."
Кто-нибудь знает, как я могу это сделать?
Хорошо, что это то, что я ожидал, но хотел быть уверен. Спасибо, что помогли Ансгару. – ricky89