Использовать строковую переменную в качестве входных данных для Set-Content -Path - PullRequest
1 голос
/ 26 декабря 2011

У меня есть следующий скрипт, который перебирает текстовые файлы и заменяет букву a на b

$ fileList = Get-ChildItem C: \ Projekte \ ps

foreach ($ i in $ fileList) {(Get-Content -Path $ i.FullName) -replace 'a', 'b' | Set-Content -Path $ i.FullName}

Я работаю, а результат записывается обратно в исходные файлы. Мне нужно записать содержимое обратно в новый файл. Имя файла - исходный файл, но с расширением ".new"

Я ожидал что-то вроде

Set-Content -Path $ i.FullName + '.new'

но это, очевидно, неправильно.

Каков правильный синтаксис для этой проблемы?

1 Ответ

2 голосов
/ 26 декабря 2011

Я предлагаю вам) в списке) фильтровать текстовые файлы, поэтому замена не произойдет для других расширений файлов, которые могут находиться в этой папке:

$fileList = Get-ChildItem D:\Scripts\Temp -Filter *.txt

foreach($i in $fileList)
{
    $path = Join-Path -Path $i.DirectoryName -ChildPath ($i.BaseName + '.new')
    (Get-Content -Path $i.FullName) -replace 'a','b' | Set-Content -Path $path
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...