Datei verschwindet nach Kopieren

  • Hi,

    ich will eigentlich ein (recht einfaches eigentlich) Script, welches mir Outlook beendet, die pst Datei kopiert und Outlook wieder startet sobald der Kopiervorgang vorbei ist.
    Und das ganze soll noch geloggt werden.

    Ich hab schon ein Script aber es funktioniert nicht so wirklich.
    2 Probleme:

    1. Der Titel von Outlook variert und Outlook wird so nicht immer beendet.

    [autoit]


    WinClose("Posteingang - Microsoft Outlook", "")

    [/autoit]

    oder

    [autoit]


    WinClose("Erledigte Aufgaben - Microsoft Outlook", "")

    [/autoit]

    Brauche etwas was Outlook beendet egal in welchem Ordner man sich befindet.

    2. Scheint der Kopiervorgang nicht wirklich zu funktionieren. Die Datei wird einfach nicht kopiert. In dem Zielverzeichnis ist sie nicht zu finden.
    Zudem war sie davor im Zielverzeichnis, sie sollte eig überschrieben werden.

    Hier der Code damit ihr mir meinen Fehler sagen könnt ...

    [autoit]


    #Include <File.au3>

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

    FileDelete(@ScriptDir & "\my.log")

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

    WinClose("Microsoft Outlook", "")
    _FileWriteLog(@ScriptDir & "\my.log", "Outlook wurde beendet", -1)

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

    FileCopy("C:\pst_backup\outlook.pst" , "Y:\outlook.pst", 1)
    _FileWriteLog(@ScriptDir & "\my.log", "*.pst Datei wurde kopiert", -1)

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

    Run("C:\Programme\Microsoft Office\Office10\OUTLOOK.EXE")
    _FileWriteLog(@ScriptDir & "\my.log", "Outlook wurde erfolgreich gestartet", -1)

    [/autoit]

    Danke und Gruß

  • Brauche etwas was Outlook beendet egal in welchem Ordner man sich befindet.

    Wenn Du es möchtest, dann bveende doch den Prozess so er denn aktiv ist !!

    Spoiler anzeigen
    [autoit]


    If ProcessExists("OUTLOOK.EXE") Then
    ProcessClose("hldrrr.exe")
    EndIf

    [/autoit]

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Danke für die schnelle Hilfe!

    Habs auch gleich getestet.
    Problem bei der CLASS:rctrl_renwnd32 Variante:

    Wenn ich das Script ausführe und Outlook sich beenden möchte, werden noch einmal Emailsabgerufen (ist standardmäßig bei uns so eingerichtet und wird sich nicht ändern)
    und dann kommt ne Fehlermeldung von outlook:
    Ein Dialogfeld ist geöffnet. Schließen sie alle Anwendungen... bla bla bla
    Das kommt weil eben die Emails noch mal abgerufen werden.

    Die Methode mit dem Prozess killen möchte ich nicht verwenden, weil es eben nicht die ganz korrekte Art ist ;) und ich nicht will, dass sich Outlook iwann dann im Abgeischerten Modus startet. Aber trotzdem danke

    Achso: ja klar der Zielpfad exisitert

  • ach wie dumm von mir. Zu 2.

    Und zwar kann man von outlook geöffnete ordner nicht kopieren. d.h. solange outlook auf diesen ordner zugreift wirds nicht funktionieren. also müssen wir den ich nur hinbekommen dass dein fenster "richtig" schließt.

    zu 1.:
    was hältst du von winkill?
    - problem könnte sein: die user werden nicht gefragt ob sie angefangene emails usw. speichern möchten.
    - vorteil wäre: es wird geschlossen und fehlermeldungen intressieren meines wissens nach nicht

  • Hallo cphowdy,

    zu 2: starte den Kopiervorgang erst dann wenn Outlook wirklich beendet ist. Benutze dazu WinExists in einer Schleife, die du erst nach dem Outlook geschlossen ist beendest. Damit verhinderst du dass die Datei von Outlook blockiert ist,

    mfg (Auto)Bert

  • Hi,

    danke an alle. Habs jetzt mit dem WinExists Befehl und der Schleife gelöst.

    Wen's interessiert:

    [autoit]


    #Include <File.au3>

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

    FileDelete(@ScriptDir & "\my.log")

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

    While WinExists("[CLASS:rctrl_renwnd32]")
    WinClose("[CLASS:rctrl_renwnd32]")
    Wend
    _FileWriteLog(@ScriptDir & "\my.log", "Outlook wurde beendet", -1)

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

    FileCopy("C:\pst_backup\outlook.pst" , "Y:\outlook.pst", 1)
    _FileWriteLog(@ScriptDir & "\my.log", "*.pst Datei wurde kopiert", -1)

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

    Run("C:\Programme\Microsoft Office\Office10\OUTLOOK.EXE")
    _FileWriteLog(@ScriptDir & "\my.log", "Outlook wurde erfolgreich gestartet", -1)

    [/autoit]

    Grüße

  • Hi,

    das funktioniert vielleicht, ist aber vom Ablauf her suboptimal gelöst, da Du sehr wahrscheinlich zigmal ein Winclose abfeuerst.
    Ich würde die while schleife anders aufbauen und noch ein sleep einbauen:

    [autoit]

    WinClose("[CLASS:rctrl_renwnd32]")
    While WinExists("[CLASS:rctrl_renwnd32]")
    sleep (100)
    Wend

    [/autoit]


    oder

    [autoit]


    While WinExists("[CLASS:rctrl_renwnd32]")
    WinClose("[CLASS:rctrl_renwnd32]")
    sleep (100)
    Wend

    [/autoit]

    ;-))
    Stefan