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
#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
FileInstall("\7z.exe", @ScriptDir)
FileInstall("\7z.dll", @ScriptDir)
; Variable
Const $A1 = "Bilder kopieren und entpacken." ; SplashTextOn für alle Hinweisfenster
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
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"
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
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
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
;===============================================================================
; Entpackfunktion
;===============================================================================
SplashTextOn($A1, $D1,400,20,-1,-1,1)
Sleep($E3)
SplashOff()
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)
;===============================================================================
; Hinweis und ein OKAY ????
;===============================================================================
SplashTextOn($A1, $E1,300,20,-1,-1,1)
Sleep($E3)
SplashOff()
SplashTextOn($A1, $E2,400,20,-1,-1,1)
Sleep($E3)
SplashOff()
;===============================================================================
; 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, = '' 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], = '' 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, = '' 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
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.