2017-08-28 1 views
0

Ich möchte AutoHotKey hören/sehen einen Ordner auf der Festplatte (sagen wir C: \ Ordner) für alle neuen Dateien, die dort erstellt werden. Wenn eine neue Datei auf der Show, sollte das Skript eine Reihe von Befehlen auszuführen:Wie AutoHotKey verwenden, um auf neue Dateien in einem Ordner zu reagieren?

Send {Esc} Sleep, 100 Send {F5} Sleep, 100 Send {Home} Sleep, 100 Send s Sleep, 100 Send {Enter} Return

, wonach sollte es für neue Änderungen zu beobachten die Ordner zurück gehen und so weiter. Ich weiß, dass es die WatchDirectory() -Funktion verwenden sollte, aber ich weiß nicht, wie ich es implementieren soll. Irgendeine Hilfe? Danke!

Antwort

1

können Sie die WatchFolder() Funktion verwenden, laden Sie es es an der gleichen Stelle wie das Skript setzen und dann können Sie tun:

#Include %A_ScriptDir%\WatchFolder.ahk 

WatchFolder("c:\folder", "myFunc", , Watch := 1) 
return 

myFunc(path, changes) { 
    for k, change in changes 
     ; 1 means new file was added 
     if (change.action = 1) { 
      gosub doStuff 
      return 
     } 
} 

doStuff: 
; commands you want to execute 
return 
0

Vielen Dank für Ihre Antwort. Ich habe Ihren Code hinzugefügt und möchte nicht funktionieren. Das Skript scheint nicht geladen zu werden (kein Symbol in der Taskleiste). Mein letzter Code sieht wie folgt aus:

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. 
; #Warn ; Enable warnings to assist with detecting common errors. 
SendMode Input ; Recommended for new scripts due to its superior speed and reliability. 
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. 


#Include %A_ScriptDir%\WatchFolder.ahk 

WatchFolder("C:\Users\kris\Desktop\temp", "myFunc", , Watch := 1) 
return 

myFunc(path, changes) { 
for k, change in changes 
    ; 1 means new file was added 
    if (change.action = 1) { 
     gosub doStuff 
     return 
    } 
} 

doStuff: 
    Send {Esc} 
    Sleep, 500 
    Send {F5} 
    Sleep, 100 
    Send {Home} 
    Sleep, 100 
    Send s 
    Sleep, 100 
    Send {Enter} 
return 

ich die WatchFolder.ahk im selben Ordner wie das Skript eingefügt haben.

+0

Das ist, weil Sie keine Hotkeys haben und es nur beendet. Fügen Sie '# Persistent' am Anfang hinzu und es wird weiter ausgeführt. – Oleg

+0

Danke! Klappt wunderbar :) –

Verwandte Themen