0

我想在jenkins中编写一个Powershell脚本来读取文件并替换该文件中的一部分文件路径。当我对路径进行硬编码时,下面的脚本会出现:替换部分文件路径并在Sonarqube中获取结果

$file = "$env:WORKSPACE\UIArtifacts\unit-tests-lcov.info" 
$text = (Get-Content -Path $file -ReadCount 0) -join "`n" 
$text -replace "c:\\Sysapps\\Hudson\\.jenkins\\jobs\\Encirca - UI CI\\workspace\\trunk\\app", $env:WORKSPACE | Set-Content -Path $file 

但是,当我动态设置文件路径时,我没有得到结果。以下是我试图运行的脚本:

$file = "$env:WORKSPACE\UIArtifacts\unit-tests-lcov.info" 
$text = (Get-Content -Path $file -ReadCount 0) -join "`n" 
$text -replace ".*\\workspace\\trunk\\app", $env:WORKSPACE | Set-Content -Path $file 

任何人都可以在这方面帮助我吗?

回答

0
$file = "$env:WORKSPACE\UIArtifacts\unit-tests-lcov.info" 
$text = (Get-Content -Path $file -ReadCount 0) -join "`n" 
$replace = ".*\\trunk\\app" 
$text -replace $replace $env:WORKSPACE | Set-Content -Path $file 

PS C:\Windows\system32> $file = "C:\temp\test.txt" 

PS C:\Windows\system32> $text = (Get-Content -Path $file -ReadCount 0) -join "`n" 

PS C:\Windows\system32> $text 
c:\Sysapps\Hudson\.jenkins\jobs\Encirca - UI CI\workspace\trunk\app\TestFolder1\TestFolder2 

PS C:\Windows\system32> $string = ".*\\trunk\\app" 

PS C:\Windows\system32> $text -replace $string, "Set\Custom\Path\Here" | Set-Content -Path $file 

PS C:\Windows\system32> Get-Content $file 
Set\Custom\Path\Here\TestFolder1\TestFolder2 
+0

上述脚本执行但我没有得到解决方案。当我对文件路径进行硬编码时,我得到了解决方案。还有什么帮助? –

+0

代码与您的代码有什么不同?是你试图在字符串的开头总是替换的路径的一部分吗? –

+0

是的,它总是在路径的开始 –