Запускать файл .cmd каждые x минут, когда приложение используется?

Запускать файл .cmd каждые x минут, когда приложение используется?

Я пытаюсь найти способ поэтапного резервного копирования папки каждые 15 минут, но только в том случае, если VS Code использовался/был в фокусе с момента последнего резервного копирования.

Есть ли у кого-нибудь идеи, как это можно сделать?

решение1

Относительно легко сделать в AutoHotkey... если вы раньше им не пользовались, то, возможно, вам также захочется воспользоваться SciTE4AutoHotkey, в котором есть подсветка синтаксиса.

Вот примерный план, как сделать что-то подобное... вам придется отладить код, чтобы заголовок окна работал правильно (используйте функцию Window Spy из значка в трее, чтобы получить соответствующий WinTitle для VS Code, и см. описание справки на WinTitle). Вам также придется отладить оператор run, чтобы он запустил резервное копирование... вы можете запустить резервное копирование напрямую или как пакетный файл, и иногда проще заставить пакетный файл работать.

; Global variable to store last active window time
Global gLastActive 

; This will call the Backup() function periodically..
SetTimer, Backup, % 15*60*1000 ; 15 minutes, in milliseconds

; This is the main loop, just sets a global if the window is active at any point
Loop {
    If WinActive("VS Code") {           ; this will need to be a valid WinTitle
        gLastActive := A_TickCount
        ; MsgBox % "Window detected..."     ; debug message for getting WinTitle correct
    }
    
    Sleep 1000
}

ExitApp         ; Denote logical end of program, will never execute


; Backup function will run periodically and only back things up
;    if VS Code was active since last time...
Backup() {
    Static lastTick
    
    ; If the window was active after the last backup, run a backup this time
    If (gLastActive>lastTick)
        Run, C:\Target.cmd, C:\WorkingDir, Hide ; this will need to be corrected for syntax
    
    lastTick := A_TickCount
}

Примечание:Это совершенно непроверенный код, просто дающий вам пример фреймворка, с которого можно, возможно, начать.

Связанный контент