Я пытаюсь написать эквивалентНа месте заменить с помощью PowerShell
find -name "*.xml" | xargs grep -l "Search String"
| xargs perl -p -i -e 's/Search String/Replace String/g'
в PowerShell. Это то, что я придумал.
Get-ChildItem 'D:\code\cpp\FileHandlingCpp\input - Copy' -Recurse |
Select-String -SimpleMatch $src_str |
foreach{(Get-Content $_.path) | ForEach-Object { $_ -replace $src_str, $target_str }}
Я получаю сообщение об ошибке «Процесс не может получить доступ к файлу, так как он используется другим процессом». Поэтому я придумал вариант несколько линий, как показано ниже. Я мог сделать замены в строки теперь, кроме одного в $ src_str. что случилось с $ src_str?
$src_str="<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?>"
$target_str=""
echo $src_str
foreach ($var in (Get-ChildItem 'D:\code\cpp\FileHandlingCpp\input - Copy' -Recurse
| Select-String -SimpleMatch $src_str).Path)
{
(Get-Content $var) | ForEach-Object { $_ -replace $src_str, $target_str }
| Set-Content $var
}
Я проверю и вернусь к вам. – Jagannath