過去幾天我一直在研究一個我認爲會很容易的腳本,但似乎沒有,我明白爲什麼。我的問題是如何解決它。我如何殺死所有cmd.exe,除了當前正在批量運行的cmd.exe?
批處理腳本,我需要解釋:
我在cmd.exe的,做了一堆東西,就像從一個位置移動龐大的文件量到另一個運行的腳本。讓我們叫它 movefile.cmd
。這個腳本有效,但有時會停止(很少 - 不要進入爲什麼和那個腳本)。它的重要性在於此腳本始終運行,因此我的想法是創建一個批處理,該處理會退出cmd.exe,然後每小時重新打開該腳本。讓我們把這個腳本restartcmd.bat
聽起來非常容易,我能做到這一點:
@echo off
:loop
start c:\script\movefile.cmd
Timeout /nobreak /t 3600
Taskkill cmd.exe
goto loop
但顯然,這並不工作,因爲我的新的腳本也cmd.exe的運行,因此它會殺了這過程也是如此。
我已經試過:
所以我做了CMD.EXE的副本,並將其更名爲成dontkillthis.exe。我運行dontkillthis.exe,然後從dontkillthis.exe打開restardcmd.bat - 完美的工作!但是我需要能夠只用腳本來代替我的腳本。爲什麼?因爲它應該儘可能簡單,我希望我的restartcmd.bat位於我的啓動文件夾中。
我一直在尋找獲取cmd.exe的確切進程ID的想法,並關閉,以便我的dontkillthis.exe將保持,但我似乎無法指出它。嘗試所有寫在這裏how to kill all batch files except the one currently running,但我不能得到它的工作。
我不確定我是否感到困惑,或者實際上是否有點困難。
我真的很感謝這裏的幫助。
問候
MO
骯髒的方法:創建一個'cmd'作爲'kill-me.exe',使用'start kill-me c:\ script \ movefile.cmd'然後'taskkill kill-me.exe'(這是一個快速入門。應該有更好的方法。) – anishsane 2015-04-01 11:22:53
[獲取當前cmd.exe的PID](https://social.msdn.microsoft.com/Forums/vstudio/en-US/270f0842-963d-4ed9-b27d-27957628004c/what -is-the-pid-of-the-current-cmdexe),那麼'taskkill'可以選擇根據'PID!= xxx'選項來檢查'taskkill /?'。 – anishsane 2015-04-01 11:26:27