Sign in to follow this  
Followers 0
RedneckTech

variable folder name

6 posts in this topic

still working on that AV script. not easier anymore, but a challenge for me so its interesting :)

Basically trying to run an exe in a folder with a variable name.

C:\folder\folder\VERSION\target.exe

my boss gave me this

$SourceFolder = "C:\Versiontest\"
_ScanFolder($SourceFolder)

Func ScanFolder($SourceFolder)
   Local $Search
   Local $File
   Local $FileAttributes
   Local $FullFilePath

   $Search = FileFindFirstFile($SourceFolder & "\*.*")
 
   While 1
      If $Search = -1 Then
         ExitLoop
      EndIf

      $File = FileFindNextFile($Search)
      If @error Then ExitLoop
      MsgBox(0, "", $File)

      $FullFilePath = $SourceFolder & "\" & $File
      $FileAttributes = FileGetAttrib($FullFilePath)

      If StringInStr($FileAttributes,"D") Then
     ScanFolder($FullFilePath)
      Else
     LogFile($FullFilePath)
      EndIf
 
   WEnd
 
   FileClose($Search)
EndFunc

and i know it's not what i want, but its close and i just cant get it to work. any ideas?

just to clarify, the VERSION folder is renamed to the current version of the program with every update.

Share this post


Link to post
Share on other sites



Look into _FileListToArray, loops, and StringRegExp to find your file


IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites

actually this is working (ALMOST!!) just need to fix my issue with the messagebox in success returning 0. not sure what i missed.

$Parent = "C:TestFolder*"
$Target = "Test.txt"

If FileExists ($Parent) = 1 Then
   $returnvalue = _Search($Parent, $Target)
   MsgBox (0,"Success?", $returnvalue)
Else
   MsgBox(0,"","Folder not found")
EndIf


Func _Search($Parent, $Target)
   $Search = FileFindFirstFile($Parent & "*.*")
   While 1
      If $Search = -1 Then ExitLoop
      
      $File = FileFindNextFile($Search)
      If @error Then ExitLoop
      MsgBox(0,"Search Subroutine", $File)
      
      $FullPath = $Parent & "" & $File
      If $File = $Target Then
         Return $FullPath
      Else
         $FileAttr = FileGetAttrib($FullPath)
         If StringInStr( $FileAttr, "D") Then
            _Search($FullPath, $Target)
         EndIf
      EndIf
   WEnd
        
EndFunc

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

ok. found some minor issues. MsgBox(0,"", $FullPath) works before the Return $FullPath, but when i MsgBox(0,"", $returnvalue) i get zero...

$Parent = "C:TestFolder"
$Target = "Test.txt"

If FileExists ($Parent & "*") = 1 Then
   $returnvalue = _Search($Parent, $Target)
   MsgBox (0,"Success?", $returnvalue)
Else
   MsgBox(0,"","Folder not found")
EndIf


Func _Search($Parent, $Target)
   $Search = FileFindFirstFile($Parent & "*.*")
   MsgBox(0,"", "in func")
   While 1
      MsgBox(0,"", "start loop")
      If $Search = -1 Then ExitLoop
      MsgBox(0,"", "search = " & $Search )
      $File = FileFindNextFile($Search)
      If @error Then ExitLoop
      MsgBox(0,"Search Subroutine", $File)
      
      $FullPath = $Parent & "" & $File
      If $File = $Target Then
         MsgBox(0,"", "Full path = " & $FullPath)
         Return $FullPath
      Else
         $FileAttr = FileGetAttrib($FullPath)
         If StringInStr( $FileAttr, "D") Then
            _Search($FullPath, $Target)
         EndIf
      EndIf
   WEnd
        
EndFunc
Edited by RedneckTech

Share this post


Link to post
Share on other sites

It is possible that the possible recursion in your code is causing an issue.

When you call a function from within itself it is called recursion, so when your

function returns, it might be that it is returning the value to itself.

That sounds weird I know but its the likely explanation.


AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites

yea i actually figured that out. I set $savedPath = "" right before the original call to the function and changed the return $FullPath to $SavedPath = $FullPath. Only changes the variable if its successful so If $SavedPath <> "" Then. all good.

Thanks guys! best help as usual!

Share this post


Link to post
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
Sign in to follow this  
Followers 0