在Powershell中为.dat文件保存查找和替换文本功能

时间:2020-01-09 06:32:19

标签: powershell replace

我正在编写一个脚本,该脚本将查找并替换一个单词的所有实例。但是我不确定如何保存更改。

$file = Get-Content "C:\Script.dat" -Raw
$old = 'oldword' 
$new = 'newword'
$file.Replace($old,$new) 

最初,我使用了以下内容,但这会引起问题。

$file.Replace($old,$new) | Set-Content $file

这导致了该问题的错误

Set-Content : Cannot find drive. A drive with the same *some random stuff*...

我将如何保存更改和/或解决上述问题?

2 个答案:

答案 0 :(得分:2)

$file = Get-Content "C:\Script.dat" -Raw
$old = 'oldword' 
$new = 'newword'
$file.Replace($old,$new) | Out-File -FilePath C:\Script.dat

答案 1 :(得分:1)

您非常接近,但是Set-Content需要做两件事:文件位置的路径和要存储的值。就个人而言,我更喜欢在使用.Replace()方法时覆盖变量,而不是将其通过管道传递到其他cmdlet中。

这可以做到:

$file = Get-Content "C:\Script.dat" -Raw
$old = 'oldword' 
$new = 'newword'
$file = $file.Replace($old,$new)
Set-Content -Path "C:\Script.dat" -Value $file

如果可能,请尝试避免将文件直接存储在C:\上,因为这通常需要管理员权限才能写入。

此外,您可以通过与原来列出的方式类似的方法来管道传输到Set-Content,但仍需要为其提供文件路径:

$file.Replace($old,$new) | Set-Content "C:\Script.dat"