我有一個PowerShell的紙條test.ps1:正則表達式的PowerShell腳本刪除DEBUG標記
#if DEBUG
Write-Output "LOG 1"
#endif
Write-Output "LOG 2"
#if DEBUG
Write-Output "LOG 3"
#endif
Write-Output "LOG 4"
我想去掉DEBUG標籤與他們之間的代碼的方法。 我會得到這樣的:
Write-Output "LOG 2"
Write-Output "LOG 4"
我設法躺在這樣的:
$src = "C:\test.ps1"
$out = "C:\test2.ps1"
(Get-Content $src -Raw) -creplace "(?m)^(#if DEBUG)(?s).+(?m)^(#endif)","" | Set-Content -Encoding Default $out
但是輸出,我只得到這樣的:
Write-Output "LOG 4"
我想這是因爲該命令刪除所有在第一個標籤「#if DEBUG」和最後一個標籤「#endif」之間。不考慮其他標籤之間。
你能幫我嗎?
爲什麼不只是使用預處理器? – Biffen 2015-03-02 15:37:43
用'Write-Debug'代替'Write-Output',然後刪除'#if DEBUG'(簡單搜索和替換)。使您的腳本成爲高級功能,然後使用'-Debug'開關獲取您的調試輸出。 – alroc 2015-03-02 16:12:18