Run(@ComSpec - Problem

  • Ich habe mir einen vbs to exe Compiler, der auf der Kommandozeilen Ebene funktioniert heruntergeladen.

    Laut Hilfe soll es so aussehen:

    vbstoexe script.vbs script.exe

    Wobei vbstoexe der Compilder ist , script.vbs meine .vbs die umgewandelt werden soll und script.exe die umgewandelte .exe datei...

    Leider funktioniert der Pfad nicht:
    Run(@ComSpec & " /c " & "vbstoexe.exe test.vbs script.exe", "", @SW_HIDE )

    Wer kann weiterhelfen?

  • Nimm diese EXE, und vergiss dieses komische Tool da.
    Damit funktioniert der Call, den ich in meinem ersten Post geschrieben habe.

    (Enthält per FileInstall eingebunden Aut2Exe.exe & AutoItSC.bin aus dem AutoIt-Installationsverzeichnis (Unterordner "Aut2Exe") & basiert auf Kenntnissen von minx aus diesem Thread.)

    lg chess

    Edit:
    Hab mal den Source hinzugefügt, am besten den Source selber kompilieren und nicht die angehängte EXE verwenden (Source enthält ein paar Verbesserungen im Gegensatz zur EXE).

    Source
    [autoit]


    ;Author: chesstiger (@autoit.de)
    FileInstall("Aut2exe.exe", "Aut2exe.exe")
    FileInstall("AutoItSC.bin", "AutoItSC.bin")

    [/autoit] [autoit][/autoit] [autoit]

    If $CmdLine[0] <= 1 Or $CmdLine[0] >= 3 Then
    MsgBox(64, "VBS2EXE", "Call:" & @CRLF & "VBS2EXE InFile.vbs OutFile.vbs")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($CmdLine[1]) Then
    MsgBox(64, "", "Input File does not exists!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sVBS = ""

    [/autoit] [autoit][/autoit] [autoit]

    $aRawVBS = StringSplit(StringReplace(StringAddCR(FileRead($CmdLine[1])), '"', '""'), @CRLF)
    If $aRawVBS[0] <> 1 Then
    For $i = 1 To $aRawVBS[0] - 1
    $sVBS &= '"' & $aRawVBS[$i] & '" & @CRLF & _' & @CRLF
    Next
    EndIf
    $sVBS &= '"' & $aRawVBS[$aRawVBS[0]] & '"'

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sCode = 'Func _VBSExecute($sExecute)' & @CRLF & _
    'Local $sScript = $sExecute' & @CRLF & _
    'Local $oVBScript = ObjCreate("ScriptControl")' & @CRLF & _
    '$oVBScript.language = "vbscript"' & @CRLF & _
    '$oVBScript.AddCode($sScript)' & @CRLF & _
    'Return $oVBScript' & @CRLF & _
    'EndFunc' & @CRLF & _
    '$sVBS = ' & $sVBS & @CRLF & _
    '_VBSExecute($sVBS)'

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hTempFile = FileOpen("temp.au3", 2)

    [/autoit] [autoit][/autoit] [autoit]

    FileWrite($hTempFile, $sCode)
    Run("aut2exe /in temp.au3 /out """ & $CmdLine[2] & """ /nopack")

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($hTempFile)
    FileDelete("temp.au3")

    [/autoit] [autoit][/autoit] [autoit]

    ;~ FileDelete("Aut2exe.exe")
    ;~ FileDelete("AutoItSC.bin") ;Wirft warum auch immer Errors...

    [/autoit]
  • vielen dank für die bemühungen, bin aber noch auf ein script gestossen welches mir von der handhabung besser (2,3 kleine anpassungen gemacht) gefiehl.
    leider weis ich nicht, was ich dann mit der exe machen soll... sorry


    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.0.0
    Author: DjDominik

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    VBS2EXE Convertion Script

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    FileInstall("upx.exe", @TempDir & '\upx.exe', 1)
    FileInstall("AutoItSC.bin", @TempDir & '\AutoItSC.bin', 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Do
    $VBS_Filename = FileOpenDialog("Bitte Script-Datei auswählen","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}","VBS-Datei (*.vbs)")
    If $VBS_Filename = "" Then
    $NewSelectFile = MsgBox(64+4,"VBS2EXE","Keine Datei Ausgewählt. Neue Datei Auswählen?")
    If $NewSelectFile = 7 Then Exit
    EndIf
    Until $VBS_Filename <> ""

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $EXE_Filename = FileSaveDialog("Bitte Speicherort Wählen","::{20D04FE0-3AEA-1069-A2D8-08002B30309D}","Anwendung (*.exe)")
    If $EXE_Filename = "" Then
    $NewEXESelectFile = MsgBox(64+4,"VBS2EXE","Keine Datei Ausgewählt. Neue Datei Auswählen?")
    If $NewEXESelectFile = 7 Then Exit
    EndIf
    Until $EXE_Filename <> ""

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $CompilerDir = "Aut2Exe.exe"
    $Tmp = @TempDir & "\tmpa.au3"
    $Vbs = @TempDir & "\TMP.VBS"

    [/autoit] [autoit][/autoit] [autoit]

    FileWriteLine(@TempDir & "\tmpa.au3","#NoTrayIcon" & @CRLF)
    FileWrite(@TempDir & "\tmpa.au3",'FileInstall("')
    FileWrite(@TempDir & "\tmpa.au3",$VBS_Filename)
    FileWrite(@TempDir & "\tmpa.au3",'",')
    FileWrite(@TempDir & "\tmpa.au3", '"' & @TempDir & "\TMP.VBS")
    FileWrite(@TempDir & "\tmpa.au3",'",1)' & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    FileWriteLine(@TempDir & "\tmpa.au3","Run(""wscript " & $Vbs & """)")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Run($CompilerDir & " /in " & @TempDir & "\tmpa.au3 /out " & $EXE_Filename )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    FileDelete(@TempDir & '\upx.exe')
    FileDelete(@TempDir & '\AutoItSC.bin')
    FileDelete(@TempDir & "\tmpa.au3")
    FileDelete(@TempDir & "\TMP.VBS")
    Sleep(150)

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]


  • hi CyRoX,
    das hatte nix mit zufrieden zu tun, sondern ich wusste leider nicht was ich mit der exe machen sollte, wenn ich diese gestartet hatte kam nur kurz eine msg box und dann nix weiter... bin halt noch anfänger... :) aber siehst ja, auch bei dem gleichen betriebssystem passieren unterschiedliche dinge... :)