En gros il ouvre les include , trouve les variables globales et les fonctions pour ensuite vérifier si elles sont utilisé dans le script. Si le script juge l'include inutile il met simplement un ";" Devant. Ce script est loin d'être parfait donc il se peut qu'il commette des erreurs.
Pour l'utiliser il suffit de le transformer en .exe et et glisser-déposer les documents .au3
Code : Tout sélectionner
#include <Array.au3>
If $cmdline[0] <> 0 And FileExists($cmdline[1]) And StringRight($cmdline[1], 4) = ".au3" Then
FileChangeDir(StringLeft($cmdline[1], StringInStr($cmdline[1], "\", Default, -1)))
$au3 = FileRead($cmdline[1])
$include = StringRegExp($au3, "(?m)^#include\h['<""](.+?\.au3)[>'""]", 3)
For $i=0 to UBound($include)-1
If FileExists($include[$i]) then
$include_path = $include[$i]
Else
$include_path = @ProgramFilesDir & "\autoit3\include\" & $include[$i]
EndIf
$include_text = FileRead($include_path)
$find = False
$testing = StringRegExp($include_text, "(?m)(?i)(?x)^Global\hconst\h(\$.+?)[ =]", 3)
$testing2 = StringRegExp($include_text, "(?m)(?i)(?x)^Func\h(.+?\()", 3)
If IsArray($testing) then
_ArrayConcatenate($testing, $testing2)
Else
$testing = $testing2
EndIf
For $ii=0 To UBound($testing)-1
If StringInStr($au3, $testing[$ii]) Then
$find = True
ExitLoop
EndIf
Next
If not $find Then $au3 = StringRegExpReplace($au3, "(?m)^#include\h['<""]" & $include[$i] & "[>'""]", ";$0")
Next
$open = FileOpen($cmdline[1], 10)
FileWrite($open, $au3)
FileClose($open)
EndIf