Ordner als Fenster öffnen

  • Ich suche einen Befehl, um einen Ordner im Windowsfenster automatisch zu öffnen, und hier mit Mausbefehlen die Dateien zu bearbeiten. Danach soll das Fenster automatisch wieder schließen. Dies soll alle 24Stunden erfolgen.
    Vielen Dank
    Gruß Grisu57

    • Offizieller Beitrag

    Was willst du denn mit den Dateien machen?? Kopieren, verschieben??
    Dann solltest du es lieber mit der Kommandozeile von autoit machen. geht deutlich schneller.
    Wenn der user was sehen soll, gib ihm Statusmeldungen... *gg*

    Sonst durch ein

    Code
    run("H:\WINDOWS\explorer.exe /root, D:")


    öffnet den Explorer mit dem Inhalt von Laufwerk d:

    Wichtig ist H:\WINDOWS\explorer.exe /root, [Verzeichnisname]

  • Der Rechner läuft 24 Stunden. Er protokolliert Statusmeldungen eines Scanners. Ich erstelle alle 24 Stunden eine neue Datei die das Datum des jeweiligen Tages trägt. Über diese Datei wird dann das Protokollprogramm neu gestartet. Ich denke, dein Tip hilft mir weiter und löst mein Problem. Werds gleich ausprobieren.
    Vielen Dank
    Gruß Grisu

  • Ich hätte es gerne mit dem Run-Befehl realisiert. Leider ist es mir nicht gelungen, den Run-Befehl zu starten wenn die jeweils neue Datei über eine Variable difiniert ist. Deshalb erstelle ich die Datei jetzt und starte sie dann mit makieren und send Enter. Wenn du einen Tip hast, wie es noch zuverlässiger geht, schreib ihn mir.
    Gruß Grisu

    • Offizieller Beitrag

    Hallo!

    Code
    $datei = "C:\Datei.txt"
    Run ($datei)

    Oder ein Programm mit der Datei als erstem Parameter:

    Code
    $datei = "C:\Datei.txt"
    Run ("C:\Programm.exe " & $datei)

    Hoffe, das klappt,
    peethebee

    p.s. kannst auch mal in den Chat kommen, dann geht es vielleicht noch einfacher...

  • Zitat

    Ich erstelle alle 24 Stunden eine neue Datei die das Datum des jeweiligen Tages trägt. Über diese Datei wird dann das Protokollprogramm neu gestartet.

    Wie meinst Du das genau ?: "Über diese Datei wird dann das Protokollprogramm neu gestartet".

    Je mehr Input wir bekommen desto besser können wir dir Helfen.

    Eine Datei zu erstellen die das Datum des Aktuellen Tages hat, ist sicherlich kein Problem:

    Code
    $file = "c:" & @MDAY & "." & @MON & "." & @YEAR &".log"; Dateiname z.B. 31.01.2006.log
    $Scannprog = "C:\Programme\Scannprogrammordner\Scannprogramm.exe"
    
    
    FileOpen($file,2); neue Datei erstellen
    FileWriteLine($file,"Das steht in Zeile1"); irgendetwas reinschreiben, "" kann auch leer bleiben
    FileClose($file)
    Run($Scannprog & " " & $file); Programm aufruf mit Dateiname als startparameter, man beachte das & " " & - wichtig weil sonst Programm name und Dateiname nicht getrennt werden

    Gruß
    Wolke

    Einmal editiert, zuletzt von wolkenloser (31. Januar 2006 um 19:44)

  • Hallo
    Ich sehe schon, meine Probleme sind für euch keine.
    Ich bin vor ca 1 Woche mit Autoit angefangen. Das Programm nennt sich POC32 und schreibt Alarmierungen unserer Feuerwehr mit, in der ich Mitglied bin.Ich habe es mit Autoit schon soweit, das es mir eine E-Mail mit der Einsatzmeldung schickt, aber das mit dem Datum hat mich vor Probleme gestellt.
    Nun soll immer um Mitternacht eine neue Protokolldatei mit dem Datum und der Endung .POC erstellt werden in die das Programm über den Tag die Meldungen schreibt. Ich denke ich werde eure Vorschläge testen, da ich so noch nicht durchschaue, ob es funktioniert.

  • Wie teilst Du dem Programm denn mit in welche Dateies schreiben soll ? übergibst Du den Dateinamen beim Programmaufruf wie in meinem Beispiel ?
    Mußt Du das Programm vorher beenden ?

    Gruß
    Wolke

  • Ich muß das Programm vorher beenden. Und dann läßt sich das Programm auch nicht, wie in deinem Script mit dem neuen Dateinamen starten sondern die Datei muß vorher erstellt werden. Sonst kommt es zu einer Fehlermeldung"Datei nicht Gefunden".
    Gruß Bernd

  • Folgenden Ablauf stelle ich mir vor.
    -Programm in den Fordergrund
    -Programm schließen mit enter bei nachfrage speichern
    -neue Datei im Programmordner erstellen mit aktuellem Datum
    -Programm über Aufruf der neuen Datei maximiert starten

  • Hi,

    ich habe mir den Thread mal komplett durchgelesen (brav gell?). Mir ist aber noch nicht wirklich klar was Du machen willst.

    ich denke Du meinst folgendes:
    - autoit erstellt log-datei
    - autoit startet poc32 mit der log-datei als parameter
    - poc32 schreibt flöhlich Einträge in die log-datei
    - autoit beendet poc32 nach 24 Stunden und speichert die log-datei
    - autoit erstellt neue log-datei und startet wieder poc32 mit der neuen Datei als Parameter
    soweit richtig?

    Fragen:
    - wann soll eine Mail verschickt werden?
    - Hast Du schon eigene Skriptansätze die Du Posten könntest?

    ... ach ja, es gibt für webserver ein kommondozeilentool "cronolog.exe" damit kann man webserver-logdateien im laufenden betrieb wechseln. Vielleicht geht das ja auch mit deinem Programm? Ich werde mal nachgucken :))

  • poc32.exe |cronolog.exe c:\poc_logs\%Y-%m-%d.log

    das tool kannst Du unter: http://cronolog.org/download/index.html
    herunterladen.

    Es muß nichts installiert werden, es reicht wenn Du die cronolog.exe in ein beliebiges Verzeichnis kopierst. ;)
    Ist zwar keine autoit-lösung aber ich glaube das wäre eine saubere Lösung :)

  • Das mit der cronolog.exe werde ich auf jeden Fall ausprobieren. Was die Mailgeschichte angeht, so muß man im Programmfenster eine Zeile markieren und in die Zwischenablage kopieren. Von hieraus versende ich die Meldung mit Sendmail an mich selber, damit ich eine SMS aufs Handy bekomme. Ausgeloest wird das ganze durch eine Alias Datei, in der die RIC Nummern entsprechenden Wehren. Hier kann man jeder Wehr eine Batch oder exe Datei zuweisen, die dann ausgeführt wird.

    Das ist die Datei, die alle 24 Stunden ausgeführt wird. Leider funktioniert der Killbefehl für das Fenster am Ende nicht.


    $sDate = @mday & @Mon &@Year
    WinKill ($sDate,"")

    $Progpfad="C:\Programme\BayCom\POC32\"
    runwait ("C:\WINDOWS\explorer.exe /root, C:\Programme\BayCom\POC32\")
    Sleep(60000) ;five seconds
    Global $sDate
    Dim $FilePath
    #include <file.au3>
    _FileCreate ($FilePath )
    If Not _FileCreate(& $sDate".POC") Then
    MsgBox(4096,"Error", " Error Creating/Resetting log. Fehler:" & @error)
    EndIf
    Sleep(2000) ;five seconds

    Send("{END}")
    Send("{enter}")
    Sleep(5000) ;five seconds
    WinKill ($Progpfad,"")

    Dies ist die Datei, die ausgeführt wird um eine E-Mail zu versenden. Da das Mailprogramm ein Kommandozeilenprogramm ist, das unter Dos läuft, habe ich den Datenaustausch über die Zwischenablage mit CMD gemacht.


    $sDate = @mday & @Mon &@Year
    WinActivate($sDate, "")
    Sleep(2000) ;five seconds
    MouseClick("left", 64, 114, 1)
    Send("{END}")
    send("{CTRLDOWN}")
    send("{c down}")
    send("{CTRLUP}")
    #include <Process.au3>
    $rc=_RunDos("start C:\Programme\BayCom\POC32\E-Mail.cmd")
    Dim $var
    $var=ClipGet ()
    $file = FileOpen("VierundMarsch.LOG", 1)
    ; Check if file opened for writing OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    Sleep(5000) ;five seconds

    FileWriteLine($file, $var)

    FileClose($file)

    vielen Dank für eure Tips. Mal sehen obs klappt.
    Gruß Grisu57

  • skript eins habe ich mal etwas gesäubert und umgestellt, an ein paar stellen ist mir noch unklar was Du machen willst -> siehe Kommentare ;) :

  • #include <file.au3>
    Global $sDate
    Dim $sDate = @mday & @Mon &@Year
    Dim $Progpfad="C:\Programme\BayCom\POC32\"
    Dim $FilePath = $Progpfad & $sDate&".POC"


    WinKill ($sDate,"") ;was wird hier beendet? Die bereits laufende Instanz der Anwendung?

    Ja, hier soll die laufende Instanz beendet werden. Diese hat ja den Namen des aktuellen Datums.
    Ich rufe das script um 23:59Uhr auf, beende die Anwendung, warte eine Minute und erstelle dann eine neue Datei mit neuem Datum. Leider hat das so nicht funktioniert. Es ist eine Datei erstellt worden mit altem Datum.

    ;was soll hier gemacht werden? willst Du den Explorer aufrufen um eine Datei zu erstellen? falls ja, ist das nicht notwendig.
    Ich öffne hier das Fenster in dem die neue Datei erstellt wird. Da die neue Datei am Ende erstellt wird soll die Markierung ans Ende springen und dann mit enter die Datei und damit das Programm starten.

    runwait ("C:\WINDOWS\explorer.exe /root, C:\Programme\BayCom\POC32\")
    Sleep(60000) ;five seconds <-warum wartest Du hier?

    $fhandle = FileOpen($FilePath,1)
    If @error = -1 Then
    MsgBox(4096,"Error", " Error Creating/Resetting log. Fehler:" & @error)
    Else
    FileClose($fhandle)
    EndIf
    run("C:\Programme\BayCom\POC32\poc32.exe "& $Filepath)

    ;wohin sendest du die Keys?
    Send("{END}")
    Send("{enter}")
    Sleep(5000) ;five seconds
    WinKill ($Progpfad,"")[I]
    Ich bin begeistert, wie einfach man das machen kann, wenn man die richtigen Befehle kennt.
    Gruß Bernd

  • ich habe mir das Programm mal heruntergeladen. Kannst du mir mal ein Beispiel posten, wie die poc-dateien aufgebaut sind...und ggf. screenshots dazu? Da ich keinen pager habe und auf dem Gebiet keine Ahnung komme ich sonst nicht weiter :))

  • Hallo
    Ich habe das Script, so wie du es umgebaut hast getestet.
    Es läuft sehr gut. Allerdings mußte ich das Programm vorm aufrufen der neuen Datei beenden, da es sonst keine Veränderungen gibt. Nun habe noch eine Frage. Gibt es einen remanenten Speicherbereich, der einen Stromausfall überlebt? Ich würde gerne nach einem Stromausfall bzw Absturz mit Neustart die aktuelle Datei bzw wenn sich das Datum geändert hat eine neue Datei starten. Außerdem gibt es Gerüchte im Internet, das das Porgramm POC32 die Daten jeder Meldung in die Variable %3 schreibt. Gibt es eine Möglichkeit mit Autoit hierauf zuzugreifen?

    Ich hänge hier eine POC Datei an. Die läßt sich mit dem POC32 öffnen. Auch mit einem Editor läßt sie sich öffnen.
    Zusätzlich häge ich die Allias Datei mit dran. Die muß in den POC32 Ordner. Die Datei mit dem datum muß die Endung POC bekommen.
    Gruß Grisu57

  • Ausschnitt aus der Hilfe :)

    Gruß
    Wolke