Lade + Speicherzeiten

  • Hallo,

    ich bin noch Anfänger und bekomme eine Sache nicht gelöst:


    Und zwar will ich durch Autoit ein vielzahl von Dateien (z.B. Word Dokumente) inhaltlich ändern. Den Ablauf des Editierens einzelner habe ich bereits gebaut.

    Jetzt besteht aber das Problem, dass die Dateien über das Netzwerk geöffnet und wieder gespeichert werden müssen. Das dauert ein paar Sekunden, manchmal mehr, manchmal weniger, je nach Dateigröße und Netzwerktraffic. Deshalb möchte ich ungern statisch mit Sleep arbeiten, damit das Script nicht unnötig lang läuft.

    Wie kann ich diese Dauer dynamisch anpassen?
    Die Applikation, in dem Fall Word, ist ja die gesammte Zeit geöffnet. Nur das Laden/Speichern der Dokumente soll abgewartet werden.

    Gruß
    A-mato

  • Der Quellcode:

    Zeile 37: Datei wird geladen
    Zeile 98: Datei wird gespeichert


    (Es handelt sich übrigens um Visio-Dateien. Aber weil Visio (MS Office) nicht so bekannt ist und das ganze bei Word nicht anders wäre, habe ich vorher von Word Dokumenten gesprochen.)


    [autoit]

    $listeVsd = FileOpen("C:\TEMP\Testumgebung\listeVsd.txt", 0)

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

    ; Check if file opened for reading OK
    If $listeVsd = -1 Then
    MsgBox(0, "Error", "Unable to open ListeVsd.txt.")
    Exit
    EndIf

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

    ;schleife Visio Dateien öffnen

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

    while 1

    ;ListeNamen laden
    $listeNamen = FileOpen("C:\TEMP\Testumgebung\listeNamen.txt", 0)

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

    ; Check if file opened for reading OK
    If $listeNamen = -1 Then
    MsgBox(0, "Error", "Unable to open ListeNamen.txt.")
    Exit
    EndIf


    ;readlines Pfad und Dateiname zur Visio-Datei
    $lineVsd = FileReadLine($listeVsd)
    If @error = -1 Then ExitLoop

    ClipPut($lineVsd)

    ;Start -> Ausführen
    Send ("#r")
    Sleep (30);30
    Send ("^v")
    Sleep (30);30
    Send ("{Enter}")
    ;Hier wird die Visio-Datei geöffnet. Er müsste warten bis die Datei geladen ist.
    Opt("WinTitleMatchMode",2)
    WinWaitActive (" - Microsoft Visio")
    ;S&E öffnen (Suchen & Ersetzen)
    Send("!bn")
    Sleep (100)

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

    ; Schleife Namen in Datei suchen und ersetzen
    ; Read in lines of text until the EOF is reached
    While 1
    ;readlines Zeile 'alter Name'
    $lineNamen = FileReadLine($listeNamen)
    If @error = -1 Then ExitLoop

    ClipPut($lineNamen)

    MouseClick ("left", 400, 273, 1, 0)
    Sleep (30)
    Send ("^a")
    Send ("{BS}")

    Sleep (30)
    Send ("^v")
    Sleep (30);30

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

    ;readlines Zeile 'neuer Name'
    $lineNamen = FileReadLine($listeNamen)
    If @error = -1 Then ExitLoop

    ClipPut($lineNamen)

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

    MouseClick ("left", 400, 306, 1, 0)
    Sleep (30)
    Send ("^a")
    Send ("{BS}")

    Sleep (30)
    Send ("^v")
    Sleep (30);30

    ; S&E ausführen
    MouseClick ("left", 440, 480, 1, 0)
    Send ("{Space 2}")
    Opt("WinTitleMatchMode",2)
    WinActivate (" - Microsoft Visio", 1)
    ;Sleep (3000)

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


    Wend

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

    FileClose($listeNamen)

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

    MouseClick ("left", 650, 480, 1, 0)
    Sleep (100)

    Send ("!ds")
    ;Hier, an dieser Stelle müsste er das Ende des Speicherns abwarten.
    Sleep (100)
    Send ("!dc")
    Sleep (1000)

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

    WEnd

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

    FileClose($listeVsd)

    [/autoit]

    Einmal editiert, zuletzt von Automato (30. Januar 2007 um 15:34)