我有以下脚本循环遍历文本文件,用b替换字母a
$ fileList = Get-ChildItem C:\ Projekte \ ps
foreach($ file in $ fileList){(Get-Content -Path $ i.FullName)-replace'a','b'| Set-Content -Path $ i.FullName}
我工作,结果写回原始文件。我需要将内容写回新文件。该文件的名称是原始文件,但扩展名为“.new”
我期待像
这样的东西Set-Content -Path $ i.FullName +'。new'
但那显然是错的。
这个问题的正确语法是什么?
答案 0 :(得分:2)
我建议你)在列表中)过滤文本文件,因此对于可能位于该文件夹中的其他文件扩展名不会发生替换:
$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
}