Jump to content

List and count variable(s) from autoit script to text(Like Autoit Debugger Variables window)


PpsSupport
 Share

Recommended Posts

To everyone,

The following script will help you count variable within autoit script file (.au3) and list them to a text file. The output list is similar to the varible windows in autoit debugger.

Source of inspiration: List All Variable Names In Script

;Author: Jeffrey Paesch

#include <File.au3>
#include <StringConstants.au3>

local $appkey, $lines, $sVarArr[1]

;set and delete registry
$appkey = "hkcu\software\ppsolution.net\variablestrip"
RegDelete($appkey)

;get source script file
$Source = FileOpenDialog("Choose a script to find Variables in:", @DesktopCommonDir, "Scripts (*.au3)", 3)
If @error Then Exit

;create variable list file
$oFile= StringTrimRight($Source, 4) & "_VarRename.txt"
_FileCreate($oFile)

;Read script file
_FileReadToArray($Source, $lines)

;extracting variables from file to registry
For $i = 1 To UBound($lines, 1) - 1
    If StringLeft($lines[$i], 2) <> ";~" Then
        $words_splits = StringSplit($lines[$i], " ")

        For $words In $words_splits
            $count1 = 1
            $count2 = 1
            $1e_var = ""
            $2e_var = ""

            If StringInStr($words, "$") > 0 Then
                $words = StringMid($words, StringInStr($words, "$"), StringLen($words) + 1)
                $words = StringStripWS($words, $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES)

                $first_letter = StringRight($words, 1)
                If $first_letter = "," Then $words = StringLeft($words, StringLen($words) - 1)
                If $first_letter = ")" Then $words = StringLeft($words, StringLen($words) - 1)

                If StringInStr($words, "[") And StringRight($words, 1) = "]" Then
                    $pos_brack1 = StringInStr($words, "[")
                    $pos_brack2 = StringInStr($words, "]")
                    $char = $pos_brack2 - $pos_brack1 - 1
                    $1e_var = StringMid($words, 1, $pos_brack1 - 1)
                    $subtext = StringMid($words, $pos_brack1 + 1, $char)
                    If StringInStr($subtext, "$") > 0 Then $2e_var  = $subtext
                EndIf

                If Not StringInStr($words, "[") And StringRight($words, 1) = "]" Then $1e_var = StringLeft($words, StringLen($words) - 1)

                if $1e_var = "" then $1e_var = $words

                if $1e_var = "$""" then exitloop

                If RegRead($appkey, $1e_var) Then
                    $count1 = RegRead($appkey, $1e_var)
                    $count1 += 1
                EndIf
                RegWrite($appkey, $1e_var, "reg_sz", $count1)

                If $2e_var <> "" Then
                    if RegRead($appkey, $2e_var) Then
                        $count2 = RegRead($appkey, $2e_var)
                        $count2 += 1
                    endif
                    RegWrite($appkey, $2e_var, "reg_sz", $count2)
                EndIf

            EndIf
        Next
    EndIf
Next

;count registry
$countreg = 1
while 1
    $sVar = RegEnumVal($appkey, $countreg)
    If @error <> 0 Then ExitLoop
    $countreg += 1
wend

;get registry key and value
for $i = 1 to $countreg
    ReDim $sVarArr [UBound($sVarArr ) + 1]

    $sVar = RegEnumVal($appkey, $i)
    If @error <> 0 Then ExitLoop
     $sVal = RegRead($appkey, $sVar)

     $sVarArr [$i] = $sVar & " (" & $sVal & ")"

next

;sort Array
_ArraySort ( $sVarArr)

;write variable to text file
for $i = 1 to ubound($sVarArr) - 1
    filewrite ($oFile,  $sVarArr[ $i] & @crlf)
    ;consolewrite ($sVarArr[$i] & @crlf)
next

;open variable list
ShellExecute($oFile)
;_fileprint($oFile)

 

You may comment out the last line to print your list directly to a default printer.

 

 

Link to comment
Share on other sites

Hmmm, you don't need to the use registry for this. Also this will display as a variable...

MsgBox($MB_SYSTEMMODAL, "", "This is not a $variable")

I have code floating around the forum which does exactly this. It's quicker, correct and doesn't use the registry for keeping the count.

Edited by guinness

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...