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

是的,它總是在路徑的開始 –