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
Ordner als Fenster öffnen
-
Grisu57 -
31. Januar 2006 um 14:29 -
Geschlossen -
Erledigt
-
-
- 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
ö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 -
- Offizieller Beitrag
Hallo!
Wenn ich es auf die Schnelle richtig verstanden habe, wäre es wirklich sinnvoller, Befehle wie FileCopy (auch zum Umbenennen) und Run zu verwenden.
Bei weiterem Klärungsbedarf bitte nochmals melden.peethebee
-
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
-
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
-
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 ? -
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 -
Kannst Du mal die einzelnen Schritte aufschreiben ?
Z.B.
Menue:
Datei->Eigenschaften->Logdatei einstellen ? -
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 secondsSend("{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 secondsFileWriteLine($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 :
Code
Alles anzeigen#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? ;was soll hier gemacht werden? willst Du den Explorer aufrufen um eine Datei zu erstellen? falls ja, ist das nicht notwendig. 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,"")
-
#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
Code
Alles anzeigenKommandozeilenparameter Das besondere Array $CmdLine wird mit den deinem AutoIt-Skript übergebenen Komandozeilenparametern initialisiert. Der Skriptname wird dabei nicht als Parameter aufgefasst; den kannst du über @ScriptName herausfinden. Ein Parameter, der Leerzeichen beinhaltet, muss von "doppelten Anführungszeichen" umgeben sein. Kompilierte Skripte akzeptieren Kommandozeilenparameter genauso. $CmdLine[0] ist die Anzahl der Parameter $CmdLine[1] ist Parameter 1 (nach dem Skriptnamen) $CmdLine[2] ist Parameter 2 etc. ... $CmdLine[$CmdLine[0]] ist einer der Wege, um den letzten Parameter auszulesen... Wenn du also dein Skript so ausführst: AutoIt3.exe meinskript.au3 param1 "das ist ein anderer Parameter" $CmdLine[0] ergibt... 2 $CmdLine[1] ergibt... param1 $CmdLine[2] ergibt... das ist ein anderer Parameter @ScriptName ergibt... meinskript.au3 Zusätzlich zu $CmdLine gibt es noch eine variable namens $CmdLineRaw, die unformatierten Kommandozeilenparameter enthält. Im obigen Beispiel: $CmdLineRaw ergibt... meinskript.au3 param1 "das ist ein anderer Parameter"
-