而異常的那一天, 很多排程還是要運作, 因此寫一個批次檔, 來仿製Windows的排程, 原則上以分為單位.
使用的技巧:
- 用ping -n 1 127.0.0.1 > NUL來產生大約1秒的間隔.
- 用迴圈內判斷是否仍是同一分鐘, 如果是, 就暫時不跑主程式.
- 利用%time%參數抓時間.
寫出來就大約是這樣:
@echo off
rem 2020/01/09
rem PahKun
:start
rem 用%%f再呼叫主程式, 因為主程式會重複使用到目前分鐘數來判斷.
for %%f in (%time:~3,2%) do call :main %%f
goto :start
goto :end
:main
rem 每1分鐘執行一次以下的副程式
rem EXAMPLE
rem call :schtasks %1 00 "backup_to_nas"
call :schtasks %1 00 "backup_to_nas"
call :schtasks %1 15 "backup_to_nas"
rem 副程式執行完成
:loop
rem 每間隔1秒檢查是否已經到下1分鐘
ping -n 1 127.0.0.1 > NUL
if %1==%time:~3,2% goto :loop
rem exit :main
exit /b
goto :end
:schtasks
rem 如果目前分鐘與預定分鐘相同, 執行原本預定的排程.
if %1==%2 schtasks /run /tn %3
exit /b
goto :end
:end
https://www.linkedin.com/pulse/%25E7%2594%25A8%25E6%2589%25B9%25E6%25AC%25A1%25E6%25AA%2594%25E4%25BB%25BF%25E8%25A3%25BDwindows%25E6%258E%2592%25E7%25A8%258B-%25E8%2590%258A%25E5%25A7%2586-%25E5%258F%25B2