Sign in to follow this  
Followers 0
le15

Help Run exe with parameter

11 posts in this topic

How to run an exe with parameter ?

#Include <Array.au3>
;================================================================================================================================
Dim $Array__FolderList [1]
Dim $Array__EmptyFolder [1]
Dim $Array__FolderName [1]
Dim $Array__SystemFolder [1]
Dim $Array__TargetFolder [1]
$WBzip = @ScriptDir & "\WBzip.exe"
$ScriptName = FileOpen(@ScriptDir & "\Test.script", 2)

_FolderList ("E:\WB_Source\Applications\IrfanView")
_EmptyFolder($Array__FolderList)
_FolderName($Array__FolderList)
_SystemFolder($Array__FolderList)
_TargetFolder($Array__FolderList)

;_arrayDisplay ($Array__FolderList,"Folders")
;_arrayDisplay ($Array__EmptyFolder,"EmptyFolder")
;_arrayDisplay ($Array__FolderName,"FolderName")
;_arrayDisplay ($Array__SystemFolder,"SystemFolder")
;_arrayDisplay ($Array__TargetFolder,"TargetFolder")
;--------------------------------------------------------------------------------------------------------------------------------
$CountFolder = $Array__FolderList[0]
For $i = 1 To $CountFolder
    
    If $Array__EmptyFolder[$i] = 1 Then 
        ContinueLoop
    Else
        Dim $Array__FileList [1]
        _FileList($Array__FolderList[$i])
        For $j = 1 To $Array__FileList[0]
            Run($WBzip & " /a " & $ScriptName & " " & $Array__FolderName[$i] & " " & $Array__FileList[$j])
        Next
        
        
    EndIf

Next

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Search the forum...

Edited by PaulIA

Auto3Lib: A library of over 1200 functions for AutoIt

Share this post


Link to post
Share on other sites

How to run an exe with parameter ?

Can you explain what excatly you are trying to run and r u just trying to run executable with parameters or trying to pass parameters to another app ?


Live and Learn, 'cause Knowledge is Super Power.

Share this post


Link to post
Share on other sites

Can you explain what excatly you are trying to run and r u just trying to run executable with parameters or trying to pass parameters to another app ?

Trying to pass parameters to another app from my au3

Run("WBzip.exe" & " -a " & "Test.Script" & " " & $Array__FolderName[$i] & " " & $Array__FileList[$j])

But that don't work

Share this post


Link to post
Share on other sites

Trying to pass parameters to another app from my au3

Run("WBzip.exe" & " -a " & "Test.Script" & " " & $Array__FolderName[$i] & " " & $Array__FileList[$j])

But that don't work

The commad seems to be OK. What kind of error r u getting, please post everything you're doing and all erors you're getting. It's hard to say what's going on, expecially with external executable. Check that parameters are set correctly.

Live and Learn, 'cause Knowledge is Super Power.

Share this post


Link to post
Share on other sites

The commad seems to be OK. What kind of error r u getting, please post everything you're doing and all erors you're getting. It's hard to say what's going on, expecially with external executable. Check that parameters are set correctly.

The file is not write

All code here and WBzip in attachement

#Include <Array.au3>
;================================================================================================================================
Dim $Array__FolderList [1]
Dim $Array__EmptyFolder [1]
Dim $Array__FolderName [1]
Dim $Array__SystemFolder [1]
Dim $Array__TargetFolder [1]
$WBzip = @ScriptDir & "\WBzip.exe"
$ScriptName = @ScriptDir & "\Test.script"
FileOpen($ScriptName,2)

_FolderList ("E:\WB_Source\Applications\IrfanView")
_EmptyFolder($Array__FolderList)
_FolderName($Array__FolderList)
_SystemFolder($Array__FolderList)
_TargetFolder($Array__FolderList)

;_arrayDisplay ($Array__FolderList,"Folders")
;_arrayDisplay ($Array__EmptyFolder,"EmptyFolder")
;_arrayDisplay ($Array__FolderName,"FolderName")
;_arrayDisplay ($Array__SystemFolder,"SystemFolder")
;_arrayDisplay ($Array__TargetFolder,"TargetFolder")
;--------------------------------------------------------------------------------------------------------------------------------
$CountFolder = $Array__FolderList[0]
For $i = 1 To $CountFolder
    
    If $Array__EmptyFolder[$i] = 1 Then 
        ContinueLoop
    Else
        Dim $Array__FileList [1]
        _FileList($Array__FolderList[$i])
        For $j = 1 To $Array__FileList[0]
            $WBzip_Cmd = $WBzip & " -a " & $ScriptName & " " & $Array__FolderName[$i] & " " & $Array__FileList[$j] 
            RunWait($WBzip & " -a " & $ScriptName & " " & $Array__FolderName[$i] & " " & $Array__FileList[$j])
            
            MsgBox(0,"Info",$WBzip_Cmd)

        Next
        
        
    EndIf

Next

;================================================================================================================================
Func _FileList($current)
;--------------------------------------------------------------------------------------------------------------------------------
    Local $search = FileFindFirstFile($current & "\*.*")
    While 1
        Dim $file = FileFindNextFile($search)
        If @error Or StringLen($file) < 1 Then ExitLoop
        If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
            
             $Array__FileList[0] = ($Array__FileList[0] + 1)
             _ArrayAdd ($Array__FileList, $current & "\" & $file)
          
        EndIf

    WEnd
    FileClose($search)

EndFunc
;================================================================================================================================
Func _FolderList($current)
;--------------------------------------------------------------------------------------------------------------------------------
    _arrayAdd ($Array__FolderList,$current )
    _ListFolder($current)
    $Array__FolderList[0] = ($Array__FolderList[0] + 1)
    Return $Array__FolderList
EndFunc 
;================================================================================================================================
Func _ListFolder($current)
;--------------------------------------------------------------------------------------------------------------------------------
    Local $search = FileFindFirstFile($current & "\*.*")
    While 1
        Dim $file = FileFindNextFile($search)
        If @error Or StringLen($file) < 1 Then ExitLoop
;~         If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
;~             
;~              $FileList[0] = ($FileList[0] + 1)
;~              _ArrayAdd ($Array__FileList, $current & "\" & $file)
;~           
;~               
;~         EndIf
        If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
            
            $Array__FolderList[0] = ($Array__FolderList[0] + 1)
            _arrayAdd ($Array__FolderList,$current & "\" & $file)
            _ListFolder($current & "\" & $file)

        EndIf

    WEnd
                   
    FileClose($search)
Return $Array__FolderList
EndFunc
;================================================================================================================================
Func _EmptyFolder($av_Array)
;--------------------------------------------------------------------------------------------------------------------------------   
    Local $iCurrentPos, $iUBound
    If Not IsArray($av_Array) Then
        SetError(1)
        Return -1
    EndIf
    $i_UBound = UBound($av_Array) - 1   

        For $i = 1 To $i_UBound
            ;-----------------------------------
                $size = DirGetSize($av_Array[$i] , 2)
                If $size   Then 
                    _arrayAdd ($Array__EmptyFolder, "0")
                Else
                    _arrayAdd ($Array__EmptyFolder, "1")
                EndIf
            ;-----------------------------------
        Next

Return $Array__EmptyFolder
EndFunc
;================================================================================================================================
Func _FolderName($av_Array)
;--------------------------------------------------------------------------------------------------------------------------------   
    Local $iCurrentPos, $iUBound, $iLocation, $iStartFolder
    
    If Not IsArray($av_Array) Then
        SetError(1)
        Return -1
    EndIf
    
    $i_UBound = UBound($av_Array) - 1   
    
        For $i = 1 To $i_UBound
            ;-----------------------------------
            $ilocation = StringInStr ( $av_Array[$i] , "\", 0, - 1 )
            $iStartFolder = StringTrimLeft($av_Array[$i], $ilocation)
            
            IF StringInStr ( $av_Array[$i], "\TO_" , 0, - 1 ) > 0 Then
                IF StringLeft($iStartFolder,3) = "TO_" Then
                    _arrayAdd ($Array__FolderName, $iStartFolder)
                Else
                    _arrayAdd ($Array__FolderName, "To_" & $iStartFolder)
                EndIf   
            Else
                _arrayAdd ($Array__FolderName, $iStartFolder)
            EndIf
            ;-----------------------------------
        Next

Return $Array__FolderName
EndFunc
;================================================================================================================================
Func _SystemFolder($av_Array)
;--------------------------------------------------------------------------------------------------------------------------------   
    Local $iCurrentPos, $iUBound, $ilen, $iLenFolder

    If Not IsArray($av_Array) Then
        SetError(1)
        Return -1
    EndIf
    
    $i_UBound = UBound($av_Array) - 1   
    
        For $i = 1 To $i_UBound
            ;-----------------------------------
            $ilen = StringLen($av_Array[1]) - 1
            $iLenFolder = StringTrimLeft( $av_Array[$i], $ilen)
            IF StringInStr ( $av_Array[$i], "\TO_" , 0, - 1 ) > 0 Then
                _ArrayAdd ($Array__SystemFolder, "1")
            Else
                _arrayAdd ($Array__SystemFolder, "0")
            EndIf
            ;-----------------------------------
        Next

Return $Array__SystemFolder
EndFunc
;================================================================================================================================
Func _TargetFolder($av_Array)
;--------------------------------------------------------------------------------------------------------------------------------   
    Local $iCurrentPos, $iUBound,  $ilen, $iLenFolder
    
    If Not IsArray($av_Array) Then
        SetError(1)
        Return -1
    EndIf
    
    $i_UBound = UBound($av_Array) - 1   
        
        For $i = 1 To $i_UBound
            ;-----------------------------------
            $ilen = StringLen($av_Array[1]) +1
            $iLenFolder = StringTrimLeft( $av_Array[$i], $ilen)
            IF StringInStr ( $av_Array[$i], "\TO_" , 0, -1 ) > 0 Then
                _ArrayAdd ($Array__TargetFolder, StringTrimLeft($iLenFolder,3 ))
            Else
                _ArrayAdd ($Array__TargetFolder, $iLenFolder)
            EndIf
            ;-----------------------------------
        Next

Return $Array__TargetFolder
EndFunc
;================================================================================================================================

Share this post


Link to post
Share on other sites

RunWait($WBzip & " -a " & $ScriptName & " " & $Array__FolderName[$i]& " " & $Array__FileList[$j])

It doesn't seem that any of your functions return the value for $Array__FileList[$j]. Your first function seems to calculate it, but doesn't return anything. AutoIt will return 0 for any user defined function that doesn't have a Return value specified.

Also in your third function u call the same function from inside itself; not sure why u need that if you have a loop there.

Func _ListFolder($current)

    Local $search = FileFindFirstFile($current & "\*.*")
    While 1
        Dim $file = FileFindNextFile($search)
        If @error Or StringLen($file) < 1 Then ExitLoop
        If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
           
            $Array__FolderList[0] = ($Array__FolderList[0] + 1)
            _arrayAdd ($Array__FolderList,$current & "\" & $file)
????? -----> _ListFolder($current & "\" & $file) 

        EndIf

    WEnd
                  
    FileClose($search)
Return $Array__FolderList
EndFunc

Live and Learn, 'cause Knowledge is Super Power.

Share this post


Link to post
Share on other sites

It doesn't seem that any of your functions return the value for $Array__FileList[$j]. Your first function seems to calculate it, but doesn't return anything. AutoIt will return 0 for any user defined function that doesn't have a Return value specified.

Also in your third function u call the same function from inside itself; not sure why u need that if you have a loop there.

Func _ListFolder($current)

    Local $search = FileFindFirstFile($current & "\*.*")
    While 1
        Dim $file = FileFindNextFile($search)
        If @error Or StringLen($file) < 1 Then ExitLoop
        If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
           
            $Array__FolderList[0] = ($Array__FolderList[0] + 1)
            _arrayAdd ($Array__FolderList,$current & "\" & $file)
????? -----> _ListFolder($current & "\" & $file) 

        EndIf

    WEnd
                  
    FileClose($search)
Return $Array__FolderList
EndFunc
No all are good

_FolderList ("E:\WB_Source\Applications\IrfanView") <------ Here you select a valid folder

_EmptyFolder($Array__FolderList)

_FolderName($Array__FolderList)

_SystemFolder($Array__FolderList)

_TargetFolder($Array__FolderList)

;_arrayDisplay ($Array__FolderList,"Folders") ----------

;_arrayDisplay ($Array__EmptyFolder,"EmptyFolder")

;_arrayDisplay ($Array__FolderName,"FolderName") Test with that

;_arrayDisplay ($Array__SystemFolder,"SystemFolder")

;_arrayDisplay ($Array__TargetFolder,"TargetFolder") ----------

????? -----> _ListFolder($current & "\" & $file) -----> This is for scan sub folder

Share this post


Link to post
Share on other sites

How to make this work ?

I want to run "WBzip.exe" with 4 params

$WBzip = @ScriptDir & "\WBzip.exe"
$ScriptName = @ScriptDir & "\Test.script"
$Section = "Test"
$FileName = @ScriptDir & "\MksConvert.exe"
FileOpen($ScriptName,2)

RunWait($WBzip & " -a " & $ScriptName & " " & $Section & " " & $FileName)

Share this post


Link to post
Share on other sites

How to make this work ?

I want to run "WBzip.exe" with 4 params

$WBzip = @ScriptDir & "\WBzip.exe"
$ScriptName = @ScriptDir & "\Test.script"
$Section = "Test"
$FileName = @ScriptDir & "\MksConvert.exe"
FileOpen($ScriptName,2)

RunWait($WBzip & " -a " & $ScriptName & " " & $Section & " " & $FileName)
oÝ÷ Ûú®¢×¢,¢K§ë,ʧyçm :.nWº^Ê«¥ªÚë^®Æ®¶­se'VåvBb33²gV÷C²b33²fײb33cµt'¦fײb33²gV÷C²ÖgV÷C²b33²fײb33cµ67&DæÖRfײb33²gV÷C²gV÷C²b33²fײb33cµ6V7Föâfײb33²gV÷C²gV÷C²b33²fײb33c´fÆTæÖRfײb33²gV÷C²b33²

Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Looks ok unless you need to DoubleQuote your parameters...

RunWait('"' & $WBzip & '" -a "' & $ScriptName & '" "' & $Section & '" "' & $FileName & '"')
;)

Thank you

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