批處理bat系統(tǒng)管理之任務(wù)計(jì)劃篇
本文主要介紹使用 at 和 schtasks 兩個(gè)命令實(shí)現(xiàn)常見(jiàn)任務(wù)計(jì)劃的增刪查改等操作。其中 at 命令功能比較單一,可以設(shè)置的任務(wù)計(jì)劃的屬性較少,多用于 XP 等老系統(tǒng);相比之下 schtasks 的功能較為豐富,Win7 / Win10 等系統(tǒng)建議使用 schtasks 命令管理任務(wù)計(jì)劃。
對(duì)于 Windows 系統(tǒng)管理員來(lái)說(shuō),經(jīng)常遇到的操作可能包括:
進(jìn)程
服務(wù)
注冊(cè)表
任務(wù)計(jì)劃
防火墻
網(wǎng)絡(luò)
用戶和組
共享
FTP
一方面,初學(xué)批處理腳本的朋友們往往習(xí)慣于通過(guò)goto等死循環(huán)的方式實(shí)現(xiàn)每隔XX時(shí)間執(zhí)行一次某命令,這樣的方式只適合練習(xí)一下語(yǔ)法或者在自己電腦上做個(gè)小試驗(yàn)。如果要放在公司的服務(wù)器上,是不太合適的,因?yàn)檫@種死循環(huán)的方式太浪費(fèi)系統(tǒng)資源。推薦的方式是把腳本放在任務(wù)計(jì)劃里面定期執(zhí)行。
另一方面,某些惡意腳本也喜歡創(chuàng)建任務(wù)計(jì)劃定時(shí)執(zhí)行惡意操作,某些討厭的軟件也經(jīng)常通過(guò)任務(wù)計(jì)劃定期更新版本或彈窗等。熟練掌握相關(guān)命令行的操作,也有助于解決此類(lèi)問(wèn)題。
1. at 命令
1.1 at 命令基本語(yǔ)法
at [\\computername] [ [id] [/delete] | /delete [/yes]]
at [\\computername] time [/interactive] [ /every:date[,...] | /next:date[,...]] "command"
常用參數(shù)列表:
\\computername | 指定遠(yuǎn)程計(jì)算機(jī)。如果省略這個(gè)參數(shù),會(huì)計(jì)劃在本地計(jì)算機(jī)上運(yùn)行命令。 |
id | 指定給已計(jì)劃命令的識(shí)別號(hào)。 |
/delete | 刪除某個(gè)已計(jì)劃的命令。如果省略 id,計(jì)算機(jī)上所有已計(jì)劃的命令都會(huì)被刪除。 |
/yes | 不需要進(jìn)一步確認(rèn)時(shí),跟刪除所有作業(yè)的命令一起使用。 |
time | 指定運(yùn)行命令的時(shí)間。(24小時(shí)計(jì)時(shí)法00:00到23:59) |
/interactive | 允許作業(yè)在運(yùn)行時(shí),與當(dāng)時(shí)登錄的用戶桌面進(jìn)行交互。 |
/every:date[,...] | 指定在每周(m,t,w,th,f,s,su分別代表周一到周日)或每月的特定日期(1到31)運(yùn)行命令。如果省略日期,則默認(rèn)為在每月的本日運(yùn)行。 |
/next:date[,...] | 指定在下一個(gè)指定日期(如,下周四)運(yùn)行命令。如果省略日期,則默認(rèn)為在每月的本日運(yùn)行。 |
"command" | 準(zhǔn)備運(yùn)行的命令或批處理程序。 |
1.2 at 創(chuàng)建任務(wù)計(jì)劃
# 今天下午2:30自動(dòng)關(guān)機(jī)
at 14:30 shutdown /s /f /t 0
# 每天晚上11點(diǎn)自動(dòng)關(guān)機(jī)
at 23:00 /every:m,t,w,th,f,s,su shutdown /s /f /t 0
# 每周一到周五早上9點(diǎn)執(zhí)行腳本 C:\Test Backup.bat
at 09:00 /every:m,t,w,th,f cmd /c "C:\Test Backup.bat"
例如 C:\Test Backup.bat 腳本內(nèi)容是:
@echo off if not exist "E:\Log\" ( md "E:\Log" ) copy /y "C:\Windows\WindowsUpdate.log" "E:\Log\"
1.3 查看 at 創(chuàng)建了哪些任務(wù)計(jì)劃
直接執(zhí)行 at 命令不帶任何參數(shù)即可。
C:\>at 狀態(tài) ID 日期 時(shí)間 命令行 ------------------------------------------------------------------------------- 1 今天 14:30 shutdown /s /f /t 0 2 每月執(zhí)行日期:... 23:00 shutdown /s /f /t 0 3 每月執(zhí)行日期:... 9:00 cmd /c "C:\Test Backup.bat"
1.4 刪除ID為2的 at 任務(wù)計(jì)劃
at 2 /delete /yes
1.5 刪除所有的 at 任務(wù)計(jì)劃
at /delete /yes
1.6 獲得 SYSTEM 權(quán)限的命令行窗口
XP 系統(tǒng)有個(gè)小技巧,可以用 at 命令獲取一個(gè)系統(tǒng)權(quán)限的命令行窗口,通??梢允褂眠@個(gè)方法結(jié)束某些惡意進(jìn)程、刪除某些頑固文件等。假如現(xiàn)在的時(shí)間為16:46,運(yùn)行下面的命令,會(huì)在一分鐘后打開(kāi)一個(gè) SYSTEM 權(quán)限的命令行窗口。
at 16:47 /interactive %ComSpec%
2. schtasks 命令
2.1 schtasks 命令基本語(yǔ)法
schtasks /create | 創(chuàng)建新任務(wù)計(jì)劃 |
schtasks /delete | 刪除任務(wù)計(jì)劃 |
schtasks /query | 顯示所有任務(wù)計(jì)劃 |
schtasks /change | 更改任務(wù)計(jì)劃屬性 |
schtasks /run | 按需運(yùn)行任務(wù)計(jì)劃 |
schtasks /end | 中止當(dāng)前正在運(yùn)行的任務(wù)計(jì)劃 |
schtasks /showsid | 顯示與計(jì)劃的任務(wù)名稱(chēng)相應(yīng)的安全標(biāo)識(shí)符 |
2.2 schtasks 創(chuàng)建任務(wù)計(jì)劃
schtasks /create 命令的主要參數(shù):
/tn | 指定任務(wù)的名稱(chēng)。 |
/tr | 指定任務(wù)運(yùn)行的程序或命令。 |
/sc | 指定計(jì)劃類(lèi)型。有效值為 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。 |
/mo | 指定任務(wù)在其計(jì)劃類(lèi)型內(nèi)的運(yùn)行頻率。這個(gè)參數(shù)對(duì)于 MONTHLY 計(jì)劃是必需的。對(duì)于 MINUTE、HOURLY、DAILY 或 WEEKLY 計(jì)劃,這個(gè)參數(shù)有效,但也可選。默認(rèn)值為 1。 |
/d | 指定周或月的一天。只與 WEEKLY 或 MONTHLY 計(jì)劃共同使用時(shí)有效。 |
/m | 指定一年中的一個(gè)月。有效值是 JAN ~ DEC 和 * (每個(gè)月)。/m 參數(shù)只對(duì)于 MONTHLY 計(jì)劃有效。在使用 LASTDAY 修飾符時(shí),這個(gè)參數(shù)是必需的。否則,它是可選的,默認(rèn)值是 * (每個(gè)月)。 |
/i | 指定任務(wù)啟動(dòng)之前計(jì)算機(jī)空閑多少分鐘。鍵入一個(gè) 1 ~ 999 之間的整數(shù)。這個(gè)參數(shù)只對(duì)于 ONIDLE 計(jì)劃有效,而且是必需的。 |
/st | 以 HH:MM:SS 24 小時(shí)格式指定時(shí)間。默認(rèn)值是命令完成時(shí)的當(dāng)前本地時(shí)間。/st 參數(shù)只對(duì)于 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 和 ONCE 計(jì)劃有效。它只對(duì)于 ONCE 計(jì)劃是必需的。 |
/sd | 以 YYYY/MM/DD 格式指定任務(wù)啟動(dòng)的日期。默認(rèn)值是當(dāng)前日期。/sd 參數(shù)對(duì)于所有的計(jì)劃有效,但只對(duì)于 ONCE 計(jì)劃是必需的。 |
/ed | 指定任務(wù)計(jì)劃運(yùn)行的最后日期。此參數(shù)是可選的。它對(duì)于 ONCE、ONSTART、ONLOGON 或 ONIDLE 計(jì)劃無(wú)效。默認(rèn)情況下,計(jì)劃沒(méi)有結(jié)束日期。 |
/s | 指定遠(yuǎn)程計(jì)算機(jī)的名稱(chēng)或 IP 地址(帶有或者沒(méi)有反斜杠)。默認(rèn)值是本地計(jì)算機(jī)。 |
/u | 使用特定用戶帳戶的權(quán)限運(yùn)行命令。默認(rèn)情況下,使用已登錄到運(yùn)行 SchTasks 的計(jì)算機(jī)上的用戶的權(quán)限運(yùn)行命令。 |
/p | 指定在 /u 參數(shù)中指定的用戶帳戶的密碼。如果使用 /u 參數(shù),則需要該參數(shù)。 |
/ru | 使用指定用戶帳戶的權(quán)限運(yùn)行任務(wù)。默認(rèn)情況下,使用用戶登錄到運(yùn)行 SchTasks 的計(jì)算機(jī)上的權(quán)限運(yùn)行任務(wù)。 |
/p | 指定用戶帳戶的密碼,該用戶帳戶在 /u 參數(shù)中指定。如果在指定用戶帳戶的時(shí)候忽略了這個(gè)參數(shù),SchTasks.exe 會(huì)提示您輸入密碼而且不顯示鍵入的文本。使用 NT Authority\System 帳戶權(quán)限運(yùn)行的任務(wù)不需要密碼,SchTasks.exe 也不會(huì)提示索要密碼。 |
/xml | 從文件的指定任務(wù) XML 中創(chuàng)建任務(wù)。 |
/f | 如果指定的任務(wù)已經(jīng)存在,則強(qiáng)制創(chuàng)建任務(wù)并抑制警告。 |
# 每天晚上8點(diǎn)30分關(guān)機(jī)
schtasks /create /tn "BatHome Job 2.2.01" /tr "shutdown /s /f /t 0" /sc daily /st 20:30:00 /ru System
注:服務(wù)器上的普通用戶或管理員用戶通常強(qiáng)制要求定期更改密碼,更改密碼之后,該用戶創(chuàng)建的任務(wù)計(jì)劃將會(huì)無(wú)法執(zhí)行,需要手工更改存儲(chǔ)在任務(wù)中的密碼。創(chuàng)建任務(wù)計(jì)劃的時(shí)候指定使用 System 用戶將不存在定期更改密碼的問(wèn)題。
# 每10分鐘執(zhí)行一次某個(gè)腳本
schtasks /create /tn "BatHome Job 2.2.02" /tr """"C:\Test\2.2.02 Backup.bat"""" /sc minute /mo 10 /ru System
注:待執(zhí)行的程序路徑中包含空格等特殊字符的情況下,需要增加額外的雙引號(hào)。
# 每小時(shí)過(guò)三分的時(shí)候運(yùn)行一次
schtasks /create /tn "BatHome Job 2.2.03" /tr "C:\Test\2.2.03.bat" /sc hourly /st 00:03:00 /ru System
注:因?yàn)楹雎粤?/mo 參數(shù),命令使用了小時(shí)計(jì)劃的默認(rèn)值,即每1小時(shí)執(zhí)行一次。
# 從某天開(kāi)始每三小時(shí)運(yùn)行一次
schtasks /create /tn "BatHome Job 2.2.04" /tr "C:\Test\2.2.04.bat" /sc hourly /mo 3 /sd 2022/09/29 /ru System
注:使用 /mo 參數(shù)來(lái)指定間隔時(shí)間,使用 /sd 參數(shù)來(lái)指定起始日期。由于命令沒(méi)有指定起始時(shí)間,當(dāng)前時(shí)間被用作起始時(shí)間。
# 每天運(yùn)行一次直到某天為止
schtasks /create /tn "BatHome Job 2.2.05" /tr "C:\Test\2.2.05.bat" /sc daily /st 09:00:00 /ed 2022/12/31 /ru System
注:忽略了 /mo 參數(shù),所以使用默認(rèn)間隔 1 來(lái)每天上午9點(diǎn)運(yùn)行命令。使用 /ed 參數(shù)指定到2022年12月31日結(jié)束。
# 從某天開(kāi)始每隔一天運(yùn)行一次
schtasks /create /tn "BatHome Job 2.2.06" /tr "C:\Test\2.2.06.bat" /sc daily /mo 2 /st 15:00:00 /sd 2022/09/29 /ru System
注:使用 /mo 參數(shù)來(lái)指定 2 天的間隔。
# 每三周運(yùn)行一次 schtasks /create /tn "BatHome Job 2.2.07" /tr "C:\Test\2.2.07.bat" /sc weekly /mo 3 /ru System # 每月的第一天運(yùn)行 schtasks /create /tn "BatHome Job 2.2.08" /tr "C:\Test\2.2.08.bat" /sc monthly /ru System # 每月的最后一天運(yùn)行 schtasks /create /tn "BatHome Job 2.2.09" /tr "C:\Test\2.2.09.bat" /sc monthly /mo lastday /m * /ru System # 每月的第三個(gè)周五運(yùn)行 schtasks /create /tn "BatHome Job 2.2.10" /tr "C:\Test\2.2.10.bat" /sc monthly /mo third /d fri /ru System # 第四季度每月的第三天運(yùn)行 schtasks /create /tn "BatHome Job 2.2.11" /tr "C:\Test\2.2.11.bat" /sc monthly /d 3 /m oct,nov,dec /ru System # 指定日期時(shí)間運(yùn)行一次 schtasks /create /tn "BatHome Job 2.2.12" /tr "C:\Test\2.2.12.bat" /sc once /st 22:00:00 /sd 2022/09/29 /ru System # 每次系統(tǒng)啟動(dòng)的時(shí)候運(yùn)行 schtasks /create /tn "BatHome Job 2.2.13" /tr "C:\Test\2.2.13.bat" /sc onstart /ru System # 每當(dāng)用戶登錄的時(shí)候運(yùn)行 schtasks /create /tn "BatHome Job 2.2.14" /tr "C:\Test\2.2.14.bat" /sc onlogon /ru System # 空閑指定時(shí)長(zhǎng)的時(shí)候運(yùn)行 schtasks /create /tn "BatHome Job 2.2.15" /tr "C:\Test\2.2.15.bat" /sc onidle /i 15 /ru System
注:使用 /i 參數(shù)指定系統(tǒng)空閑15分鐘后運(yùn)行。
2.3 schtasks 修改任務(wù)計(jì)劃
schtasks /change /tn TaskName [/s computer [/u [domain\]user /p password]] [/tr TaskRun] [/ru [Domain\]User | "System"] [/rp Password]
2.4 schtasks 立即運(yùn)行任務(wù)計(jì)劃
schtasks /run /tn TaskName [/s computer [/u [domain\]user /p password]]
注:忽略原有計(jì)劃,立即運(yùn)行任務(wù)計(jì)劃。不會(huì)更改任務(wù)計(jì)劃好的下次運(yùn)行時(shí)間。
2.5 schtasks 終止由任務(wù)啟動(dòng)的程序
schtasks /end /tn TaskName [/s computer [/u [domain\]user /p password]]
2.6 schtasks 查看任務(wù)計(jì)劃
schtasks [/query] [/fo {TABLE | LIST | CSV}] [/nh] [/v] [/s computer [/u [domain\]user /p password]]
注:Win7 命令行窗口的中文狀態(tài)下 schtasks /query 可能會(huì)出錯(cuò),可以先用chcp命令切換到英文。
chcp 437 schtasks /query
2.7 schtasks 刪除任務(wù)計(jì)劃
schtasks /delete /tn {TaskName | *} [/f] [/s computer [/u [domain\]user /p password]]
# 刪除指定名稱(chēng)的任務(wù)計(jì)劃 schtasks /delete /tn "GoogleUpdateTaskMachineUA" /f # 刪除所有的任務(wù)計(jì)劃 schtasks /delete /tn * /f
注:慎重執(zhí)行!系統(tǒng)有很多默認(rèn)的任務(wù)計(jì)劃,請(qǐng)做好充分的備份。
2.8 沒(méi)有參數(shù)對(duì)應(yīng)的屬性如何修改
例如:沒(méi)有哪個(gè)參數(shù)可以設(shè)置“如果任務(wù)運(yùn)行時(shí)間超過(guò)以下時(shí)間,停止任務(wù)”
1) 創(chuàng)建任務(wù)計(jì)劃:
schtasks /create /tn "BatHome Job 2.8.01" /tr "C:\Test\2.8.01.bat" /sc daily /mo 1 /st 15:14 /ru System
2) 打開(kāi)任務(wù)計(jì)劃程序圖形界面,手工設(shè)置好超時(shí)時(shí)間,然后導(dǎo)出xml
# 默認(rèn)值是3天: <ExecutionTimeLimit>PT72H</ExecutionTimeLimit> # 修改成1小時(shí)之后: <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
3) 用修改后的xml文件去創(chuàng)建任務(wù)計(jì)劃
schtasks /create /ru System /tn "BatHome Job 2.8.02" /xml "C:\Test\2.8.02.xml"
使用bat文件創(chuàng)建系統(tǒng)的任務(wù)計(jì)劃程序
最近由于需要在電腦上添加任務(wù)計(jì)劃用來(lái)調(diào)用自己的腳本,由于使用一段是時(shí)間后需要重裝系統(tǒng),有需要重新進(jìn)行設(shè)置,感覺(jué)很麻煩,沒(méi)有雙擊一下文件就能創(chuàng)建好的方便。
下面是腳本的內(nèi)容,創(chuàng)建完成后,在電腦啟動(dòng)后3分鐘時(shí)執(zhí)行,目標(biāo)路徑下的bat腳本。
可以根據(jù)自己的需求修改
@echo off set curDir=C:\Users\Administrator\Desktop\test\ schtasks /create /tn record /ru system /tr "'%curDir%sclect.bat'" /sc onStart /delay 0003:00 /rl highest /F /np @echo on
簡(jiǎn)單說(shuō)一下我了解的幾個(gè)參數(shù)吧,具體的太復(fù)雜了沒(méi)專(zhuān)門(mén)去研究。
/ru system :加上這個(gè)的話創(chuàng)建的任務(wù)計(jì)劃就是system用戶創(chuàng)建的,刪除這個(gè)參數(shù)的話運(yùn)行就是當(dāng)前用戶創(chuàng)建的任務(wù)
/tr "'%curDir%sclect.bat'":是通配符的腳本路徑,由于有的直接輸入時(shí)會(huì)有問(wèn)題,特殊字符等等導(dǎo)致無(wú)法執(zhí)行,因此經(jīng)路徑拆分處理,這里拼接一下可以很方便的解決。
/delay 0003:00:這個(gè)應(yīng)該就是啟動(dòng)后延時(shí)3分鐘啟動(dòng),沒(méi)有專(zhuān)門(mén)研究,可以根據(jù)自己的需求修改(0010:00,啟動(dòng)后延遲10分鐘 ;0000:00啟動(dòng)后不延遲)
其他的我就不太清楚了,解讀到此結(jié)束,希望對(duì)大家有幫助。
到此這篇關(guān)于批處理bat系統(tǒng)管理之任務(wù)計(jì)劃篇的文章就介紹到這了,更多相關(guān)bat任務(wù)計(jì)劃內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DOS命令 Interlnk、Intersvr命令使用說(shuō)明
interlnk 啟動(dòng)簡(jiǎn)易網(wǎng)客戶機(jī) [適用場(chǎng)合] 如果有兩臺(tái)電腦可以通過(guò)它和intersvr聯(lián)成簡(jiǎn)易的網(wǎng)絡(luò),這是條很有 用的命令,但不常用2008-03-03DOS比較運(yùn)算符(LSS,LEQ,GTR,GEQ,EQU,NEQ)
這篇文章主要介紹了DOS比較運(yùn)算符(大于、小于、等于)等,主要是用于判斷文件日期大小等,方便后續(xù)操作2021-09-09批處理實(shí)現(xiàn)一行內(nèi)容分行輸出的代碼
一行內(nèi)容分行輸出的代碼,區(qū)分了小寫(xiě)字母,大寫(xiě)字母與數(shù)字。2010-10-10批處理萬(wàn)年歷實(shí)現(xiàn)代碼(包括農(nóng)歷日期)
這篇文章主要介紹了批處理萬(wàn)年歷實(shí)現(xiàn)代碼(包括農(nóng)歷日期),月歷查詢(xún)工具 最初發(fā)表于CN-DOS,輸出數(shù)字排序有問(wèn)題大家可以自行修復(fù)一下2020-06-06本機(jī)開(kāi)放的端口及使用該端口的進(jìn)程的批處理
利用netstat命令找出使用TCP協(xié)議通信的端口,并將結(jié)果分割; 將第二個(gè)參數(shù)(IP加端口)傳給%%i,第五個(gè)參數(shù)(PID號(hào))傳給%%j;2009-06-06超簡(jiǎn)單超強(qiáng)悍的清理C盤(pán)垃圾文件方法
教大家自己寫(xiě)個(gè)程序,這個(gè)程序是自動(dòng)清理電腦里的垃圾而不會(huì)破壞系統(tǒng),比很多軟件都好哦2007-04-04