2016-10-19 5 views
0

Мой код работает непоследовательно, хотя он имеет высокий уровень успеха.Сценарий Autohotkey - FileCopy не работает последовательно при выполнении резервного копирования в Dropbox

Что он делает, так это то, что он сохраняет файл ahk и автоматически создает его резервную копию в папке Dropbox. Однако несогласованная часть заключается в том, что иногда резервная копия не выполняется в папке с Dropbox. Как мне изменить свой сценарий, чтобы убедиться, что резервная копия выполняется в 100% случаев? Благодаря!

Мой код ниже:

RCtrl:: 
SaveMyFile() 
CloseAhk()     ; to backup ahk file in dropbox & close editor 
Return 


SaveMyFile() {    ; to save the ahk file and reload it 
WinGetActiveTitle, Reload 
    If InStr(Reload, ".ahk") { ; to check if it is ahk file 
    MsgBox, , , to_run.ahk is reloaded, 0.6 
    Send ^s     
    Reload 
    } 
    Else 
    Send ^s 
} 

CloseAhk() {     
IfWinActive, to_run.ahk - Notepad 
{ 
    FileAhkBackup()  ; calls the backup function 
    WinClose    ; to close the ahk file 
} 
} 

FileAhkBackup() {   ; the backup function 
FileCopy, C:\Users\xxx\Desktop\to_run.ahk, C:\Users\xxx\Dropbox\AHK\, 1 
} 

Еще раз спасибо :)

+0

Почему бы вам просто не создать [жесткую ссылку] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006 (v = vs.85) .aspx) для вашего скрипта файл? – MCL

+0

Я полагаю, что это может быть обходным путем, однако я хотел бы понять, почему он не работает должным образом. –

+0

Одной из причин может быть то, что вы скопируете файл до его сохранения в Блокноте. Я не знаю, как именно Блокнот обрабатывает операцию сохранения, но я думаю, что он просто перезаписывает весь файл. Копирование файла, который внезапно переписывается, звучит как плохая идея. Попробуйте дождаться завершения операции сохранения. Проверка [последнего времени модификации] (https://autohotkey.com/docs/commands/FileGetTime.htm) в цикле может быть хорошим способом. – MCL

ответ

0

Попробуйте бросать несколько 1000s сна там и убедитесь, что вы не пытаетесь отправить процесс до того, как предыдущий завершено ,

Смежные вопросы