python設(shè)置定時(shí)自動(dòng)啟動(dòng)程序

最近公司一幫美術(shù)要求我寫的一個(gè)簡單效績管理工具每天晚上下班前一段時(shí)間自動(dòng)啟動(dòng),防止他們老是忘記填寫,沒辦法只好試著用bat來設(shè)置Windows自己的任務(wù)計(jì)劃程序了
首先工具使用python寫的,因?yàn)橛玫搅薭at所以用了subprocess來執(zhí)行bat命令
然后使用 schtasks 命令來創(chuàng)建 Windows 任務(wù)計(jì)劃程序,但要使用 schtasks 命令需要先用chcp 437命令來切換到美版的命令行窗口 ,然后使用命令
schtasks /create /tn autoTimeLog /sc daily /st 17:45:00 /tr 你的程序的絕對(duì)路徑.exe
創(chuàng)建對(duì)應(yīng)的任務(wù)計(jì)劃程序
這個(gè)時(shí)候Windows的任務(wù)計(jì)劃程序界面應(yīng)該就存在了你創(chuàng)建的計(jì)劃任務(wù)了,但是這里還有一個(gè)問題執(zhí)行程序的起始于信息是空著的,這有時(shí)候會(huì)導(dǎo)致錯(cuò)誤,這時(shí)候執(zhí)行
schtasks /query /xml /tn autoTimeLog > sch_autoTimeLog.xml
導(dǎo)出對(duì)應(yīng)任務(wù)計(jì)劃程序的xml配置文檔,然后修改這個(gè)xml文檔,在</Command>這一行后邊加上一行<WorkingDirectory>你的程序所在位置</WorkingDirectory>,然后保存
在修改的過程中你會(huì)發(fā)現(xiàn)Windows自動(dòng)導(dǎo)出的這個(gè)xml文件是個(gè)utf-16格式的(python默認(rèn)的是utf-8),這差點(diǎn)沒把我搞死,在字符編碼這方面完全是個(gè)漿糊,用了fileload(data)也不管用,最后我逼不得已直接使用了re.sub()來替換,直接在里邊插入了自己想要的信息,而不是用xml解析后再來插入xml節(jié)點(diǎn)
改好xml文檔之后要用這個(gè)xml文檔來創(chuàng)建一個(gè)新的Windows任務(wù)計(jì)劃程序,命令如下
schtasks /create /tn autoTimeLog /xml sch_autoTimeLog.xml /F
這里的/F是為了強(qiáng)制執(zhí)行覆蓋掉開始創(chuàng)建的任務(wù)計(jì)劃程序,到這里就創(chuàng)建好了