2 dateien gleichzeitig/zusammen ausführen

  • Mal die Hilfe zum filesave dialog gelesen? Auch dort bekommst du nur den gewählten Pfad+Dateiname zurück, die Funktion selbst schreibt keine Dateien, genausowenig wie fileopendialog Dateien liest. Beide Dialoge dienen lediglich zur manuellen Auswahl eines Dateipfades bzw Dateispeicherpfades. Was du mit den Pfaden dann anstellst ist deine Sache. Wenn du Dateien binär in den Speicher lesen und auch wieder binär schreiben willst schau dir fileopen, fileread und filewrite an. Das wird aber dein Ausgangsproblem auch nicht wirklich lösen, ausser du willst den oben bereits verlinkten quellcode für "Dateien ohne fileinstall einfügen" (Posting 11) verstehen. Bei dieser Methode könntest du im Gegensatz zu fileinstall auch Variablen als Source Pfade benutzen.

  • Hier nochmal ein kleines Beispielscript zur Verwendung von FileSelectFolder und FileInstall.

    Spoiler anzeigen
    [autoit]

    #cs
    FileInstall Beispiel

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

    Author: Molaynox
    E-Mail: [email='black.eyes.soft@gmx.de'][/email]

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

    Hinweis: Dieses Script benötigt eventuell Adminstrator Rechte
    #ce

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

    $sSavePath = FileSelectFolder("Wohin mit der Datei?", "", 2) ; In welchen Ordner soll die Datei
    FileInstall("Pfad der Datei die in die .exe eingebunden werden soll", $sSavePath, 1) ; Datei beim kompilieren einbinden und beim Ausführen wieder entpacken
    If Not FileExists($sSavePath) Then MsgBox(16, "Error", "Datei konnte nicht erstellt werden") ; Wenn die Datei nicht entpackt werden konnte dann Fehler anzeigen

    [/autoit]
  • Also wenn ich das richtig verstanden habe, was du vorhast, dann hier ein Beispiel für dich.

    Zuerst lesen, dann starten. Die Datei die dann erzeugt wird musst du einmal öffnen und mit F7 zu einer .exe machen. Es wäre auch möglich, auch das compilen zu automatisieren - das würde dann aber den Rahmen eines "einfachen" Beispiels sprengen.

    Spoiler anzeigen
    [autoit]

    ; - DIE F1-HILFE IST DEIN FREUND -
    ; Jeder Befehl hat eine gute Beschreibung und in der Regel
    ; ein kurzes Beispiel. Einfach den Cursor auf einen Befehl
    ; setzen, und F1 drücken.

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

    ; Scriptverlauf:
    ; 1. Die 2 Dateien, die zusammengeführt werden sollen auswählen lassen
    ; 2. Den Speicherort auswählen lassen.
    ; 3. AutoIt Script vorbereiten und in Datei schreiben.

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

    Local $sFilePath_1, $sFilePath_2, $sFileName_1, $sFileName_2
    Local $sFileTargetPath, $hFile, $sSourceCode

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

    ; <<<<=================
    ; 1.
    ; Wir lassen den Benutzer 2 Dateien auswählen.
    ; Die Pfade der ausgewählten Dateien speichern wir in die
    ; Variablen $sFilePath_1 und $sFilePath_2.
    $sFilePath_1 = FileOpenDialog("Choose first file","","All Files (*.*)",5)
    $sFilePath_2 = FileOpenDialog("Choose second file","","All Files (*.*)",5)
    If $sFilePath_1 = "" Or $sFilePath_2 = "" Then Exit

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

    ; Und wir speichern die Dateinamen extra ab ;)
    $sFileName_1 = StringTrimLeft($sFilePath_1, StringInStr($sFilePath_1,"\",1,-1))
    $sFileName_2 = StringTrimLeft($sFilePath_2, StringInStr($sFilePath_2,"\",1,-1))

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

    ; <<<<=================
    ; 2.
    ; Nun kommt das gleiche in Grün: Wir lassen den
    ; Benutzer den Zielpfad auswählen.
    $sFileTargetPath = FileSaveDialog("Choose a destination path","","Executables (*.au3)")
    If @error Then Exit
    If StringRight($sFileTargetPath,4) <> ".au3" Then $sFileTargetPath &= ".au3"

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

    ; <<<<=================
    ; 3.
    ; Neues Script vorbereiten, das nur noch kompiliert werden muss.
    $sSourceCode &= "#NoTrayIcon" & @CRLF
    $sSourceCode &= "FileInstall('" & $sFilePath_1 & "',@TempDir & '\" & $sFileName_1 & "')" & @CRLF
    $sSourceCode &= "FileInstall('" & $sFilePath_2 & "',@TempDir & '\" & $sFileName_2 & "')" & @CRLF
    $sSourceCode &= "ShellExecute(@TempDir & '\" & $sFileName_1 & "')" & @CRLF
    $sSourceCode &= "ShellExecute(@TempDir & '\" & $sFileName_2 & "')" & @CRLF

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

    ; und in eine Datei schreiben
    $hFile = FileOpen($sFileTargetPath,2)
    FileWrite($hFile, $sSourceCode)
    FileClose($hFile)

    [/autoit]