<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文主要介紹使用 at 和 schtasks 兩個命令實現常見任務計劃的增刪查改等操作。其中 at 命令功能比較單一,可以設定的任務計劃的屬性較少,多用於 XP 等老系統;相比之下 schtasks 的功能較為豐富,Win7 / Win10 等系統建議使用 schtasks 命令管理任務計劃。
對於 Windows 系統管理員來說,經常遇到的操作可能包括:
程序
服務
登入檔
任務計劃
防火牆
網路
使用者和組
共用
FTP
一方面,初學批次處理指令碼的朋友們往往習慣於通過goto等死迴圈的方式實現每隔XX時間執行一次某命令,這樣的方式只適合練習一下語法或者在自己電腦上做個小試驗。如果要放在公司的伺服器上,是不太合適的,因為這種死迴圈的方式太浪費系統資源。推薦的方式是把指令碼放在任務計劃裡面定期執行。
另一方面,某些惡意指令碼也喜歡建立任務計劃定時執行惡意操作,某些討厭的軟體也經常通過任務計劃定期更新版本或彈窗等。熟練掌握相關命令列的操作,也有助於解決此類問題。
at [\computername] [ [id] [/delete] | /delete [/yes]]
at [\computername] time [/interactive] [ /every:date[,...] | /next:date[,...]] "command"
常用參數列:
\computername | 指定遠端計算機。如果省略這個引數,會計劃在本地計算機上執行命令。 |
id | 指定給已計劃命令的識別號。 |
/delete | 刪除某個已計劃的命令。如果省略 id,計算機上所有已計劃的命令都會被刪除。 |
/yes | 不需要進一步確認時,跟刪除所有作業的命令一起使用。 |
time | 指定執行命令的時間。(24小時計時法00:00到23:59) |
/interactive | 允許作業在執行時,與當時登入的使用者桌面進行互動。 |
/every:date[,...] | 指定在每週(m,t,w,th,f,s,su分別代表週一到週日)或每月的特定日期(1到31)執行命令。如果省略日期,則預設為在每月的本日執行。 |
/next:date[,...] | 指定在下一個指定日期(如,下週四)執行命令。如果省略日期,則預設為在每月的本日執行。 |
"command" | 準備執行的命令或批次程式。 |
# 今天下午2:30自動關機
at 14:30 shutdown /s /f /t 0
# 每天晚上11點自動關機
at 23:00 /every:m,t,w,th,f,s,su shutdown /s /f /t 0
# 每週一到週五早上9點執行指令碼 C:Test Backup.bat
at 09:00 /every:m,t,w,th,f cmd /c "C:Test Backup.bat"
例如 C:Test Backup.bat 指令碼內容是:
@echo off if not exist "E:Log" ( md "E:Log" ) copy /y "C:WindowsWindowsUpdate.log" "E:Log"
直接執行 at 命令不帶任何引數即可。
C:>at 狀態 ID 日期 時間 命令列 ------------------------------------------------------------------------------- 1 今天 14:30 shutdown /s /f /t 0 2 每月執行日期:... 23:00 shutdown /s /f /t 0 3 每月執行日期:... 9:00 cmd /c "C:Test Backup.bat"
1.4 刪除ID為2的 at 任務計劃
at 2 /delete /yes
1.5 刪除所有的 at 任務計劃
at /delete /yes
1.6 獲得 SYSTEM 許可權的命令列視窗
XP 系統有個小技巧,可以用 at 命令獲取一個系統許可權的命令列視窗,通常可以使用這個方法結束某些惡意程序、刪除某些頑固檔案等。假如現在的時間為16:46,執行下面的命令,會在一分鐘後開啟一個 SYSTEM 許可權的命令列視窗。
at 16:47 /interactive %ComSpec%
schtasks /create | 建立新任務計劃 |
schtasks /delete | 刪除任務計劃 |
schtasks /query | 顯示所有任務計劃 |
schtasks /change | 更改任務計劃屬性 |
schtasks /run | 按需執行任務計劃 |
schtasks /end | 中止當前正在執行的任務計劃 |
schtasks /showsid | 顯示與計劃的任務名稱相應的安全識別符號 |
schtasks /create 命令的主要引數:
/tn | 指定任務的名稱。 |
/tr | 指定任務執行的程式或命令。 |
/sc | 指定計劃型別。有效值為 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。 |
/mo | 指定任務在其計劃型別內的執行頻率。這個引數對於 MONTHLY 計劃是必需的。對於 MINUTE、HOURLY、DAILY 或 WEEKLY 計劃,這個引數有效,但也可選。預設值為 1。 |
/d | 指定周或月的一天。只與 WEEKLY 或 MONTHLY 計劃共同使用時有效。 |
/m | 指定一年中的一個月。有效值是 JAN ~ DEC 和 * (每個月)。/m 引數只對於 MONTHLY 計劃有效。在使用 LASTDAY 修飾符時,這個引數是必需的。否則,它是可選的,預設值是 * (每個月)。 |
/i | 指定任務啟動之前計算機空閒多少分鐘。鍵入一個 1 ~ 999 之間的整數。這個引數只對於 ONIDLE 計劃有效,而且是必需的。 |
/st | 以 HH:MM:SS 24 小時格式指定時間。預設值是命令完成時的當前本地時間。/st 引數只對於 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 和 ONCE 計劃有效。它只對於 ONCE 計劃是必需的。 |
/sd | 以 YYYY/MM/DD 格式指定任務啟動的日期。預設值是當前日期。/sd 引數對於所有的計劃有效,但只對於 ONCE 計劃是必需的。 |
/ed | 指定任務計劃執行的最後日期。此引數是可選的。它對於 ONCE、ONSTART、ONLOGON 或 ONIDLE 計劃無效。預設情況下,計劃沒有結束日期。 |
/s | 指定遠端計算機的名稱或 IP 地址(帶有或者沒有反斜槓)。預設值是本地計算機。 |
/u | 使用特定使用者帳戶的許可權執行命令。預設情況下,使用已登入到執行 SchTasks 的計算機上的使用者的許可權執行命令。 |
/p | 指定在 /u 引數中指定的使用者帳戶的密碼。如果使用 /u 引數,則需要該引數。 |
/ru | 使用指定使用者帳戶的許可權執行任務。預設情況下,使用使用者登入到執行 SchTasks 的計算機上的許可權執行任務。 |
/p | 指定使用者帳戶的密碼,該使用者帳戶在 /u 引數中指定。如果在指定使用者帳戶的時候忽略了這個引數,SchTasks.exe 會提示您輸入密碼而且不顯示鍵入的文字。使用 NT AuthoritySystem 帳戶許可權執行的任務不需要密碼,SchTasks.exe 也不會提示索要密碼。 |
/xml | 從檔案的指定任務 XML 中建立任務。 |
/f | 如果指定的任務已經存在,則強制建立任務並抑制警告。 |
# 每天晚上8點30分關機
schtasks /create /tn "BatHome Job 2.2.01" /tr "shutdown /s /f /t 0" /sc daily /st 20:30:00 /ru System
注:伺服器上的普通使用者或管理員使用者通常強制要求定期更改密碼,更改密碼之後,該使用者建立的任務計劃將會無法執行,需要手工更改儲存在任務中的密碼。建立任務計劃的時候指定使用 System 使用者將不存在定期更改密碼的問題。
# 每10分鐘執行一次某個指令碼
schtasks /create /tn "BatHome Job 2.2.02" /tr """"C:Test2.2.02 Backup.bat"""" /sc minute /mo 10 /ru System
注:待執行的程式路徑中包含空格等特殊字元的情況下,需要增加額外的雙引號。
# 每小時過三分的時候執行一次
schtasks /create /tn "BatHome Job 2.2.03" /tr "C:Test2.2.03.bat" /sc hourly /st 00:03:00 /ru System
注:因為忽略了 /mo 引數,命令使用了小時計劃的預設值,即每1小時執行一次。
# 從某天開始每三小時執行一次
schtasks /create /tn "BatHome Job 2.2.04" /tr "C:Test2.2.04.bat" /sc hourly /mo 3 /sd 2022/09/29 /ru System
注:使用 /mo 引數來指定間隔時間,使用 /sd 引數來指定起始日期。由於命令沒有指定起始時間,當前時間被用作起始時間。
# 每天執行一次直到某天為止
schtasks /create /tn "BatHome Job 2.2.05" /tr "C:Test2.2.05.bat" /sc daily /st 09:00:00 /ed 2022/12/31 /ru System
注:忽略了 /mo 引數,所以使用預設間隔 1 來每天上午9點執行命令。使用 /ed 引數指定到2022年12月31日結束。
# 從某天開始每隔一天執行一次
schtasks /create /tn "BatHome Job 2.2.06" /tr "C:Test2.2.06.bat" /sc daily /mo 2 /st 15:00:00 /sd 2022/09/29 /ru System
注:使用 /mo 引數來指定 2 天的間隔。
# 每三週執行一次 schtasks /create /tn "BatHome Job 2.2.07" /tr "C:Test2.2.07.bat" /sc weekly /mo 3 /ru System # 每月的第一天執行 schtasks /create /tn "BatHome Job 2.2.08" /tr "C:Test2.2.08.bat" /sc monthly /ru System # 每月的最後一天執行 schtasks /create /tn "BatHome Job 2.2.09" /tr "C:Test2.2.09.bat" /sc monthly /mo lastday /m * /ru System # 每月的第三個週五執行 schtasks /create /tn "BatHome Job 2.2.10" /tr "C:Test2.2.10.bat" /sc monthly /mo third /d fri /ru System # 第四季度每月的第三天執行 schtasks /create /tn "BatHome Job 2.2.11" /tr "C:Test2.2.11.bat" /sc monthly /d 3 /m oct,nov,dec /ru System # 指定日期時間執行一次 schtasks /create /tn "BatHome Job 2.2.12" /tr "C:Test2.2.12.bat" /sc once /st 22:00:00 /sd 2022/09/29 /ru System # 每次系統啟動的時候執行 schtasks /create /tn "BatHome Job 2.2.13" /tr "C:Test2.2.13.bat" /sc onstart /ru System # 每當使用者登入的時候執行 schtasks /create /tn "BatHome Job 2.2.14" /tr "C:Test2.2.14.bat" /sc onlogon /ru System # 空閒指定時長的時候執行 schtasks /create /tn "BatHome Job 2.2.15" /tr "C:Test2.2.15.bat" /sc onidle /i 15 /ru System
注:使用 /i 引數指定系統空閒15分鐘後執行。
schtasks /change /tn TaskName [/s computer [/u [domain]user /p password]] [/tr TaskRun] [/ru [Domain]User | "System"] [/rp Password]
schtasks /run /tn TaskName [/s computer [/u [domain]user /p password]]
注:忽略原有計劃,立即執行任務計劃。不會更改任務計劃好的下次執行時間。
schtasks /end /tn TaskName [/s computer [/u [domain]user /p password]]
schtasks [/query] [/fo {TABLE | LIST | CSV}] [/nh] [/v] [/s computer [/u [domain]user /p password]]
注:Win7 命令列視窗的中文狀態下 schtasks /query 可能會出錯,可以先用chcp命令切換到英文。
chcp 437 schtasks /query
schtasks /delete /tn {TaskName | *} [/f] [/s computer [/u [domain]user /p password]]
# 刪除指定名稱的任務計劃 schtasks /delete /tn "GoogleUpdateTaskMachineUA" /f # 刪除所有的任務計劃 schtasks /delete /tn * /f
注:慎重執行!系統有很多預設的任務計劃,請做好充分的備份。
2.8 沒有引數對應的屬性如何修改
例如:沒有哪個引數可以設定“如果任務執行時間超過以下時間,停止任務”
1) 建立任務計劃:
schtasks /create /tn "BatHome Job 2.8.01" /tr "C:Test2.8.01.bat" /sc daily /mo 1 /st 15:14 /ru System
2) 開啟任務計劃程式圖形介面,手工設定好超時時間,然後匯出xml
# 預設值是3天: <ExecutionTimeLimit>PT72H</ExecutionTimeLimit> # 修改成1小時之後: <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
3) 用修改後的xml檔案去建立任務計劃
schtasks /create /ru System /tn "BatHome Job 2.8.02" /xml "C:Test2.8.02.xml"
最近由於需要在電腦上新增任務計劃用來呼叫自己的指令碼,由於使用一段是時間後需要重灌系統,有需要重新進行設定,感覺很麻煩,沒有雙擊一下檔案就能建立好的方便。
下面是指令碼的內容,建立完成後,在電腦啟動後3分鐘時執行,目標路徑下的bat指令碼。
可以根據自己的需求修改
@echo off set curDir=C:UsersAdministratorDesktoptest schtasks /create /tn record /ru system /tr "'%curDir%sclect.bat'" /sc onStart /delay 0003:00 /rl highest /F /np @echo on
簡單說一下我瞭解的幾個引數吧,具體的太複雜了沒專門去研究。
/ru system :加上這個的話建立的任務計劃就是system使用者建立的,刪除這個引數的話執行就是當前使用者建立的任務
/tr "'%curDir%sclect.bat'":是萬用字元的指令碼路徑,由於有的直接輸入時會有問題,特殊字元等等導致無法執行,因此經路徑拆分處理,這裡拼接一下可以很方便的解決。
/delay 0003:00:這個應該就是啟動後延時3分鐘啟動,沒有專門研究,可以根據自己的需求修改(0010:00,啟動後延遲10分鐘 ;0000:00啟動後不延遲)
其他的我就不太清楚了,解讀到此結束,希望對大家有幫助。
到此這篇關於批次處理bat系統管理之任務計劃篇的文章就介紹到這了,更多相關bat任務計劃內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45