Variabel übernehmen

  • Hallo allerseits,
    kann man von einem Script A eine Variable in Script B transferieren ohne einen Umweg über eine andere Datei zu machen?
    Mein Problem ist, ich habe einen Ordner (Pfad bei jedem unterschiedlich) in dem Dateien und das Script sind. Durch ausführen des Scripts soll dieser gelöscht werden. Geht ja nicht, weil solange das Script aktiv ist der Ordner nicht gelöscht werden kann. Könnte ich jetzt die Variable $Ordner = @Scriptdir aus diesem Script A in ein anderes (B) auf z.B. dem Desktop transferieren, sodass Script A geschlossen und der Ordner gelöscht werden kann? Script B müsste dann ja manuell gelöscht werden. Oder gibt es dafür einen Kniff, den ich noch nicht raus habe?
    Viele Grüße Aquaplant

    Einmal editiert, zuletzt von Aquaplant (28. Oktober 2009 um 20:52)

  • Hi,

    da Dein Script im Speicher ist, kann es auch gelöscht werden. Wenn Du es öfter benötigst -> sichern!!
    Das hier funktioniert zum Beispiel:

    [autoit]

    FileDelete (@ScriptFullPath)
    MsgBox (0,"", @ScriptFullPath & " gelöscht")

    [/autoit]

    ;-))
    Stefan

  • Klappt das denn immer noch, mit einem gesamten Ordner? (DirRemove(@scriptdir))
    Das funktioniert nämlich nicht richtig, oder ich mach was falsch

    [autoit]

    Global $1
    $1 = MsgBox(1, "Unsinstall", "This will uninstall program")
    If $1 = 6 Then
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Program")
    ProcessClose("program.exe")
    DirRemove(@scriptdir)
    EndIf

    [/autoit]
  • Stimmt, da war was. Klappt aber leider immer noch nicht. Er beendet noch nicht einmal den Prozess? (s.Script)
    Edit:
    Aha, es lag an der Msgbox?
    Leider bleibt der Ordner jetzt (ohne Dateien) als Leiche zurück.

  • Hi,

    Ich gehe davon aus, das program.exe nicht Dein Skript ist.

    1) Kannst Du den Process überhaupt beenden?
    2) Der sollte unter LocalSystem laufen. Gffs. ist ein ProcessClose nicht möglich.
    3) Oder es dauert zu lange bis der Process geschlossen ist und er hat ein Handle noch offen

    Deshalb baue nach Deinem ProcessClose eine Schleife ein:

    [autoit]

    While ProcessExist ("program.exe") <> 0
    sleep (20)
    WEnd

    [/autoit]

    ;-))
    Stefan

  • Tschuldige, du hast das etwas missverstanden, bzw zu früh gepostet^^. Es lag nur an der Msgbox (obwohl unter help "ja" als wert 6 ausgegeben wird). Und es bleibt der leere Ordner zurück. Ansonsten hat sich alles geklärt :)