Suche Code zum Datei öffnen in einer Schleife Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Rasgoth
Posts: 6
Joined: 10 Jul 2017, 00:06

Suche Code zum Datei öffnen in einer Schleife

10 Jul 2017, 00:11

Hallo,

ich suche ein Script welches in einer 10 Minuten Schleife einen Ordner (z.B. C:\PDF\) mit pdf Dateien durchsucht und immer die neueste Datei öffnet.
Kann mir da wer helfen?
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Suche Code zum Datei öffnen in einer Schleife

11 Jul 2017, 03:53

Code: Select all

#SingleInstance, Force
#Persistent

fExt		:= "pdf"
srcPath	:= "C:\PDF"
prevFile	:= ""

SetTimer, EarlyAdopter,% 10*60*1000	      ; zeit ist in ms anzugeben
Return

EarlyAdopter:
Loop, Files,% srcPath "\*." fExt			  ; verzeichnis nach pdfs durchsuchen
	file := A_LoopFileName			      ; es wird nur der zuletzt ermittelte dateinamen erfasst (die vorliegende sortierung wäre hierbei nicht beachtet)
If (file = prevFile)					  ; hatten wir die datei das letzte mal bereits ermittelt?
	Return						          ; Falls ja - zurück auf los.
Else								      ; ansonsten ...
	Run,% srcPath "\" file				  ; Anzeige!	
prevFile := file						      ; festhalten des ermittelten dateinamen zum vergleich beim nächsten durchlauf.
Return
Getestet.

Korrektur: Loop, File, ... zu Loop, Files, ...
Korrektur: prevFile = file zu prevFile := file (mercy just me :))
Last edited by BoBo on 12 Jul 2017, 05:35, edited 4 times in total.
Rasgoth
Posts: 6
Joined: 10 Jul 2017, 00:06

Re: Suche Code zum Datei öffnen in einer Schleife

11 Jul 2017, 04:50

Hallo, danke für die Antwort, leider bekomme ich noch einen Fehler.
Error: Target label does not exist
In der Zeile mit SetTimer.
gregster
Posts: 8916
Joined: 30 Sep 2013, 06:48

Re: Suche Code zum Datei öffnen in einer Schleife

11 Jul 2017, 14:07

Rasgoth wrote:Hallo, danke für die Antwort, leider bekomme ich noch einen Fehler.
Error: Target label does not exist
In der Zeile mit SetTimer.
Kann eigentlich nicht sein, wenn Du das Skript 1:1 übernommen hast. Das Label 'EarlyAdopter' aus dem SetTimer-Befehl ist eindeutig vorhanden in dem Beispielskript oben (direkt unter dem folgenden 'Return'; ggf in der Codebox weiter runterscrollen). Überprüfe bitte nochmal dein Skript.
Rasgoth
Posts: 6
Joined: 10 Jul 2017, 00:06

Re: Suche Code zum Datei öffnen in einer Schleife

11 Jul 2017, 23:37

Fehler ist weg, leider funktioniert das Script noch nicht, habe im Ordner 1 pdf File. Ich starte das Script, kopiere eine neue pdf in den Ordner, diese wird mir leider nicht geöffnet.
just me
Posts: 9423
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Suche Code zum Datei öffnen in einer Schleife

12 Jul 2017, 03:06

Moin,

wird 10 Minuten nach dem Start des Skripts überhaupt eine Datei geöffnet?

Du solltest noch etwas genauer festlegen, was das Skript tun soll.
  • Was soll beim Start des Skripts geschehen?
  • Was soll das Skript tun, wenn sich beim Start des Skripts bereits mehrere PDF-Dateien im Ordner befinden?
  • Nach welchen Kriterien soll das Skript die jeweils 'neueste' Datei bestimmen?
Rasgoth
Posts: 6
Joined: 10 Jul 2017, 00:06

Re: Suche Code zum Datei öffnen in einer Schleife

12 Jul 2017, 03:30

Ich Versuche das nochmal genauer zu erklären,

Beim Start des Scripts hat man einen leeren Ordner C:\PDF
Ich stelle ein pdf in den Ordner
Das pdf geht automatisch auf und wird mir auf dem Bildschirm angezeigt
Ich schließe das pdf
Das pdf wird automatisch gelöscht
Ich stelle ein neues pdf in den Ordner
und alles wieder von vorne

Wäre Super wenn das auch ohne eine Zeitschleife funktioniert, das der Odner immer überwacht wird ob eine neue pdf drin ist und diese automatisch geöffnet wird und die alte Löscht.
just me
Posts: 9423
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Suche Code zum Datei öffnen in einer Schleife

12 Jul 2017, 04:24

Für das Überwachen von Ordnern habe ich die Funktion WatchFolder() geschrieben. Das ist allerdings relativ komplex.

Wenn sich immer nur genau eine PDF-Datei im Ordner befindet, lässt sich das auch deutlich einfacher lösen. Wenn Du den Timer alle paar Sekunden aufrufst, tut das Deinem Rechner auch nicht weh.

In BoBo's Skript steckt zumindest ein Fehler:

Code: Select all

prevFile = file						      ; festhalten des ermittelten dateinamen zum vergleich beim nächsten durchlauf.
muss durch

Code: Select all

prevFile := file						      ; festhalten des ermittelten dateinamen zum vergleich beim nächsten durchlauf.
; oder
prevFile = %file%						      ; festhalten des ermittelten dateinamen zum vergleich beim nächsten durchlauf.
ersetzt werden.

Welchen Weg willst Du gehen?

Edit:
Das pdf wird automatisch gelöscht
Durch das Skript?
Rasgoth
Posts: 6
Joined: 10 Jul 2017, 00:06

Re: Suche Code zum Datei öffnen in einer Schleife

12 Jul 2017, 04:30

Diese eine Datei soll dann durch das Skript gelöscht werden

Bei dem Script oben passiert bei mir nichts, auch nicht wenn ich das ändere.
just me
Posts: 9423
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Suche Code zum Datei öffnen in einer Schleife  Topic is solved

12 Jul 2017, 05:01

Mit etwas Glück (ich habe nicht getestet):

Code: Select all

#NoEnv
#SingleInstance, Force

; Der Titel eines Fensters kann den angegebenen Fenstertitel an beliebiger Stelle enthalten, um eine Übereinstimmung zu sein.
SetTitleMatchMode, 2

fExt     := "pdf"                         ; Dateiendung
srcPath  := "C:\PDF"                      ; Dateiverzeichnis
fPattern := srcPath . "\*." . fExt        ; Suchmuster
Delay    := 5 * 1000                      ; Pause nach erfolglosem Schleifendurchlauf (5 Sekunden)

Loop {                                    ; Endlosschleife
   file := ""                             ; Dateinamen löschen
   Loop, Files, %fPattern%                ; Verzeichnis nach PDFs durchsuchen
   {
      file := A_LoopFileName              ; es wird nur der erste ermittelte Dateiname erfasst
      path := A_LoopFileLongPath
      Break
   }
   If (file <> "")                        ; wenn eine Datei gefunden wurde
   {
      Run, %path%                         ; Datei öffnen
      WinWaitActive, %file%               ; auf das Fenster warten
      WinWaitClose                        ; auf das Schließen des Fensters warten
      FileDelete, %path%                  ; Datei löschen
   }
   Else                                   ; ansonsten
   {
      Sleep, %Delay%                      ; pausieren, bevor der nächste Schleifendurchlauf gestartet wird
   }
}
Return
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Suche Code zum Datei öffnen in einer Schleife

12 Jul 2017, 05:24

Es gab einen weiteren typo bei meinem script: Loop, File vs Loop, Files. Damit wäre es lauffähig gewesen (best guess). Durch diesen fehler agierte der Loop als reine zählschleife, womit die A_LoopFilename-variable leer blieb und die bedingung konstant zutraf ("leer = leer. Ab nach hause) :roll: Dubios das AHK das falsche "File"-setting nicht angemosert hat :wtf:
Files [v1.1.21+]
The literal word Files (case-insensitive). This cannot be a variable or expression.
Last edited by BoBo on 12 Jul 2017, 07:32, edited 1 time in total.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Rohwedder and 34 guests