Alrighty刪除在AutoIt腳本使用的功能..使用PowerShell
所以我編輯,有很多的未使用它功能的AutoIt腳本。原作者認爲可以從他/她的包含文件中添加所有功能。
起初我試圖使用AutoIt/SciTe中的工具來刪除未使用的函數,但出於一些奇怪的原因,這使得腳本/編譯文件無用。所以現在我認爲最好是寫一個功能卸妝。
以下是我到目前爲止: 搜索帶有「Func _」的行數函數出現在文件中的次數。如果1次然後選擇字符串
$FileName=".\FILENAME.au3"
$File=Get-Content $FileName
$Funcs=$File|Select-String "Func _"
foreach ($Func in $Funcs) {
$FuncName=$Func.ToString().Split('(')[1]
$Count=($File|Select-String $FuncName | Measure-Object).Count
if ($count -eq 1) {
$File|Select-String "Func _" $FuncName
}
}
我想要做的是刪除函數,可能與正則表達式。所以像這樣: REMOVE「Func _」$ func *「EndFunc」
麻煩的是,這是一個跨越多行的搜索,從Func _NAMEOFFUCTION到EndFunc。我不清楚PowerShell中的正則表達式是否可以執行此操作。並非所有的正則表達式實現似乎都能跨越多行搜索。甚至是正則表達式的答案?我不知道。
這聽起來不對。我並不熟悉PowerShell,但是我知道正則表達式,並且我看不出Singleline *或* Multiline模式如何相關。實際上,最好通過添加'-SimpleMatch'參數來將'$ FuncName'作爲一個字符串而不是正則表達式。 –
如果你需要一個正則表達式來跨越多行,那麼通常匹配換行符(即單行模式)是非常重要的。如果您需要匹配字符串內某一行的開頭(或結尾),則Multiline纔是重要的。在單個字符串中包含要匹配的行也很重要。 –
順便說一句,你假定PowerShell是否可以跨線執行正則表達式。我在說可以。 :-) –