你有沒有遇到過這樣的情況:在Windows命令行里跑了個腳本,結(jié)果半天沒反應(yīng),不確定它到底有沒有執(zhí)行?或者更糟——腳本卡住了,但你根本不知道是卡在哪兒了。
別急,今天我就來手把手教你用CMD判斷腳本是否正在執(zhí)行,而且方法超實用,適合發(fā)朋友圈或小紅書,讓同行都夸你“細(xì)節(jié)控”!
Q1:怎么知道CMD腳本是不是在運行?
最簡單的方法就是打開任務(wù)管理器(Ctrl + Shift + Esc),切換到“進程”標(biāo)簽頁,看有沒有你的腳本進程。比如你運行了一個名為`my_script.bat`的批處理文件,就在進程列表里搜這個名字。如果看到它在“CPU”或“內(nèi)存”列有活動數(shù)據(jù),說明它正在跑!
不過,如果你是寫Python、PowerShell腳本,可能看不到bat名字,這時候可以用:
tasklist | findstr /i "python"
這條命令會列出所有包含“python”的進程,幫你精準(zhǔn)定位。
Q2:腳本卡住不動怎么辦?怎么判斷它是不是死循環(huán)?
我去年就踩過坑!一個自動化備份腳本,寫了500行代碼,跑著跑著就不動了。后來才發(fā)現(xiàn)是某個文件夾權(quán)限不足,腳本卡在那一步默默等待用戶輸入。
解決辦法:加個“超時檢測”。比如在bat腳本開頭加一行:
echo 腳本開始執(zhí)行時間:%date% %time%
再在結(jié)尾加一句:
echo 腳本結(jié)束時間:%date% %time%
這樣你就能通過日志判斷它有沒有卡住。如果執(zhí)行時間超過預(yù)期(比如超過10分鐘還沒輸出結(jié)束日志),基本可以斷定腳本出問題了。
Q3:有沒有更高級的方式,比如自動檢測并重啟?
當(dāng)然有!你可以用PowerShell寫個監(jiān)控腳本:
StartProcess FilePath "cmd" ArgumentList "/c my_script.bat" PassThru | WaitProcess Timeout 600
意思是:啟動腳本,最多等10分鐘(600秒)。如果超時,就自動中斷并報警。這種做法特別適合部署在服務(wù)器上的定時任務(wù)。
??小貼士:我在小紅書發(fā)過一篇《如何優(yōu)雅地調(diào)試CMD腳本》,評論區(qū)好多小伙伴說:“原來一直以為腳本死了,其實是卡住了!” 所以,學(xué)會判斷腳本是否執(zhí)行,真的能省下一大半排查時間。
下次你再跑腳本,記得先問自己一句:“它在跑嗎?”——答案,就藏在CMD和任務(wù)管理器里。

