Introduction
先前曾教大家如何在作業系統啟動時執行特定程式。當然!有開機執行相對的就有關機執行。首先確認了工作排程器有支援Event觸發的方式,接著確認如何辨別Shutdown事件。我透過了shutdown /s /t 100做Shutdown,並在事件檢視器中發現shutdown /s與shutdown /r都為id=1074的系統事件,也從MSDN中做了再次確認。(請用shutdown /a取消關機動作)
接下來就告訴大家如何透過batch去實做。
Just Do It!
與先前再啟動執行不同的是,/SC改透過ONEVENT。另外也會透過/EC與/MO參數分別指定事件通道與過濾的事件內容。
@echo off set RUN_TASK="%1" if %RUN_TASK% == "" goto emptyError set TASK_NAME=%~nx1 schtasks /Create /RL HIGHEST /RU SYSTEM /TN %TASK_NAME% /SC ONEVENT /TR %RUN_TASK% /EC SYSTEM /MO *[System/EventID=1074] goto :finish :emptyError echo Please enter a valid cmd goto :finish :finish pause
你可以透過操作工作排程器的UI去決定/EC與/MO該如何丟。(工作排程器>建立工作>開始工作:事件發生時>自訂>新事件篩選器)
設定完再切換到XML看內容就可以知道了。
另外,我也從MSDN中發現某些參數在XP與2003之前是不支援的! 還好2003和XP已經要完全被EOL了。
友藏內心獨白: 為什麼會有需要開機與關機執行特定程式呢? 讓我們繼續看下去。
留言
張貼留言