Benötige Hilfe nach langer erfolglose Fehlersuche.

  • Hallo.

    Wenn ich das unten stehende Script bei mir auf dem PC ausführe (diesem hier) ausführe, arbeitet es fehlerfrei, auf anderen PC kommt die Meldung

    Line-1:
    Errot: Unable to execute the external program.
    Das System kann die angegebene Datei nicht finden.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs
    Ich bedanke mich bei GtaSpider, Greenhorn, BugFix King of Array, bernd670 der im Schaukelstehl sitzende Gitarrist,
    Oscar bei dem ich das Avatar nicht weiß welches Motiv es ist und Fast2. Ohne Euch wäre ich noch nicht so weit mit AutoIt.
    #ce

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

    FileInstall("\7z.exe", @ScriptDir)
    FileInstall("\7z.dll", @ScriptDir)
    ; Variable
    Const $A1 = "Bilder kopieren und entpacken." ; SplashTextOn für alle Hinweisfenster

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

    Const $B2 = "Guten Tag." ; SplashTextOn Hinweisfenster
    Const $B3 = FileSelectFolder("Auf welchem LAUFWERK $B4 suchen lassen? Spart mir das Ordnerdurchsuchen ;) ", "") ;"?:\" ; Laufwerk wo installiert wird
    Const $B4 = "irgendwas.jpg" ; nach welchem Bild darf gesucht werden

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

    Const $C5 = "\3bilderin1dat.exe" ; zu kopierende Datei und gleichzeitig Datei mir 3 Bildern
    Const $C6 = "\*.*" ; wohin soll $kopiert werden, hier ist gleiche Verzeichnis
    Const $C7 = "\7z.dll"
    Const $C8 = "\7z.exe"

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

    Const $D1 = "Die 3 Bilder kommen nun zu dem einen hinzu." ; SplashTextOn Hinweisfenster
    Const $D2 = "3bilderin1dat.exe" ; zu löschende Datei nach Erfolg von u. g. RunWait von $C5

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

    Const $E1 = "Gerade noch war es 1 Bild, jetzt sind es 4." ; Meldung das $C5 ausgeführt (?) beendet ist
    Const $E2 = "Ich wünsche noch einen schönen Tag. Auf Wiedersehen."
    Const $E3 = 2500 ; Anzeigedauer der Fenster in tauselsten Sekunde hier 2,5 Sekunden

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

    SplashTextOn($A1, $B2,400,20,-1,-1,1)
    Sleep($E3)
    SplashOff()
    $filelist = _FileListToArrayEx($B3,$B4) ;Recursive filelist siehe Forumbetrag
    If Not IsArray($filelist) Then
    If MsgBox(20,"Error",$B4) = 7 Then Exit ; neg = ExitusHopp
    Else
    $dir = StringLeft($filelist[1],StringInStr($filelist[1],"\",-1,-1))
    FileCopy(@ScriptDir & $C5,$dir&$C6)
    FileCopy(@ScriptDir & $C7,$dir&$C6)
    FileCopy(@ScriptDir & $C8,$dir&$C6)

    EndIf

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

    ;===============================================================================
    ; Entpackfunktion
    ;===============================================================================
    SplashTextOn($A1, $D1,400,20,-1,-1,1)
    Sleep($E3)
    SplashOff()

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

    RunWait(@ScriptDir & $C8 & " x -o""" & $dir & """ " & @ScriptDir & $C5)

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

    ;===============================================================================
    ; Die Dateien löschen, wenn Script fehlerfrei läuft
    ;===============================================================================
    FileDelete($dir & $C5)
    FileDelete($dir & $C7)
    FileDelete($dir & $C8)
    ;FileDelete(@ScriptDir & $C5)
    FileDelete(@ScriptDir & $C7)
    FileDelete(@ScriptDir & $C8)

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

    ;===============================================================================
    ; Hinweis und ein OKAY ????
    ;===============================================================================
    SplashTextOn($A1, $E1,300,20,-1,-1,1)
    Sleep($E3)
    SplashOff()

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

    SplashTextOn($A1, $E2,400,20,-1,-1,1)
    Sleep($E3)
    SplashOff()

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

    ;===============================================================================
    ; SuchArray erstellen ohne oben stehende Variablen
    ;===============================================================================

    Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '', $iRecurse = True)
    If Not FileExists($sPath) Then Return SetError(1, 1, '')
    If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
    If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
    If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
    Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|']
    $sFilter = StringRegExpReplace($sFilter, '\s*;\s*', ';')
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    For $iCC = 0 To 5
    If StringInStr($sFilter, $aBadChar[$iCC]) Or _
    StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
    Next
    If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
    Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
    $sTFolder = $oFSO.GetSpecialFolder (2)
    Local $hOutFile = @TempDir & $oFSO.GetTempName
    If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
    Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead, $sHoldSplit
    For $iCC = 1 To $aSplit[0]
    If StringStripWS($aSplit[$iCC], 8) = '' Then ContinueLoop
    If StringLeft($aSplit[$iCC], 1) = '.' And UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
    $sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
    Next
    $sHoldSplit = StringTrimRight($sHoldSplit, 1)
    If $iRecurse Then
    RunWait(@ComSpec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
    Else
    RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
    EndIf
    $sRead &= FileRead($hOutFile)
    If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
    FileDelete($hOutFile)
    If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '')
    Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF)
    Local $sHold
    For $iCC = 1 To $aFSplit[0]
    If $sExclude And StringLeft($aFSplit[$iCC], _
    StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
    Switch $iFlag
    Case 0
    If StringLeft($aFSplit[$iCC], StringLen($sPath)) <> $sPath Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    Case 1
    If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Then ContinueLoop
    If StringLeft($aFSplit[$iCC], StringLen($sPath)) <> $sPath Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    Case 2
    If Not StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Then ContinueLoop
    If StringLeft($aFSplit[$iCC], StringLen($sPath)) <> $sPath Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    EndSwitch
    Next
    If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(4, 4, '')
    EndFunc ;==>_FileListToArrayEx

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

    Ich denke das Includes fehlt, aber ich habe das "OrganizeIncludes" verwendet und danach benötige ich keine Includes.

    Wenn aber keine nötig sind, frage ich mich, woran es liegen kann.

    Meine Kommentare hinter den Zeilen im Quelltext einfach ignorieren. Irgendwie muß man sich ja alles merken und das möglichst kurz.

    Danke an alle, dir mir geholfen habe soweit aber schon zu kommen.

    LG, L I N A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo GtaSpider.

    Ja; das hatte ich mir ja auch schon überlegt. Aber die Datei wird ja installiert (FileInstall("\7z.exe", @ScriptDir)). Also weiß ich nicht, wo ich noch den Fehler suchen kann oder wie er entsteht. Ich kann es mir nicht erklären.

    Habe auch schon überlegt, ok der RunWait befehl zu schnell aufgerufen wird, also bevor die Datei mit FileInstall installiert ist, aber das geht ja wohl nicht.

    Dann dachte ich die Datei wird zu früh gelöscht und war vielleicht mal da (oder wie man das nennen soll). Aber ich meine auch das kann man doch ausschließen, oder?

    Kann mich da vielleicht mal BITTE einer aufklären. ;(

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Vermutlich hat der Skriptpfad Lerrzeichen. Also

    [autoit]

    RunWait('"'&@ScriptDir & $C8 & '"' & " x -o""" & $dir & """ " & @ScriptDir & $C5)

    [/autoit]
  • Okay, das teste ich mal.

    Danke schön und ich melde mich.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • @ Ritzelrocker04

    Dann muß ich doch auch die beiden Dateien unter C:\Programme\ haben, oder? Und was ist, wenn auf "C:\" der Ordner "Programme" noch nicht besteht?.
    Das Script und die beiden 7z Dateien sind im gleichen Ordner bzw. auf der gleichen Festplatte nämlich die Root von HDD-E.

    ?( Lina ?(

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl