powershell'';查找并替换'';有路径

powershell'';查找并替换'';有路径,powershell,Powershell,我正在尝试制作一个powershell脚本来替换一些文本并替换它。但是我遇到了一个问题,我可以很好地移动文本,但是当文本在文本中有路径时,powershell会查找路径而不是替换文本 是否有一个命令会忽略文本中写入的路径并将其替换 Get-Content $env:USERPROFILE\Desktop\accel8.ini $data = foreach ($line in Get-Content $env:USERPROFILE\desktop\accel8.ini) { if ($li

我正在尝试制作一个powershell脚本来替换一些文本并替换它。但是我遇到了一个问题,我可以很好地移动文本,但是当文本在文本中有路径时,powershell会查找路径而不是替换文本

是否有一个命令会忽略文本中写入的路径并将其替换

Get-Content $env:USERPROFILE\Desktop\accel8.ini
$data = foreach ($line in Get-Content $env:USERPROFILE\desktop\accel8.ini)
{

 if ($line -like 'GlobalPath=G:\Accel40')
 {
    $line -replace 'GlobalPath=G:\Accel40' , 'GlobalPath=H:\'
    
 }
 else
 {
    $line 
 }
}
$data | Set-Content $env:USERPROFILE\desktop\accel8.ini
获取正则表达式模式时出错:


而是使用非正则表达式
。Replace()


尽管在ini文件上使用的最好方法是像这样的专用ini模块,但使用regex
-replace
可以快速完成,如下所示:

$path    = Join-Path -Path ([environment]::GetFolderPath('Desktop')) -ChildPath 'accel8.ini'
$search  = [regex]::Escape('GlobalPath=G:\Accel40')
$replace = 'GlobalPath=H:\'

$data = switch -Regex -File $path {
    $search { $_ -replace $search, $replace }
    default { $_ }
}

$data | Set-Content -Path $path
由于要搜索的字符串具有在正则表达式中具有特殊意义的字符,如反斜杠,因此需要先将该字符串
[regex]::Escape()

switch-Regex-File$path{..}
逐行读取文件内容,并对每行执行Regex比较。如果与
$search
字符串比较,则替换该行中的搜索字符串,否则(默认
选项),该行将原封不动地返回

Get-Content $env:USERPROFILE\Desktop\accel8.ini
$data = foreach ($line in Get-Content $env:USERPROFILE\desktop\accel8.ini)
{

 if ($line -like 'GlobalPath=G:\Accel40')
 {
    $line.replace('GlobalPath=G:\Accel40','GlobalPath=H:\')
    $line
    
 }
 else
 {
    $line 
 }
}
$data | Set-Content $env:USERPROFILE\desktop\accel8.ini
$path    = Join-Path -Path ([environment]::GetFolderPath('Desktop')) -ChildPath 'accel8.ini'
$search  = [regex]::Escape('GlobalPath=G:\Accel40')
$replace = 'GlobalPath=H:\'

$data = switch -Regex -File $path {
    $search { $_ -replace $search, $replace }
    default { $_ }
}

$data | Set-Content -Path $path