有什么方法可以编写 Windows .bat 文件来终止进程吗?
-
09-06-2019 - |
题
因此,每次我打开公司拥有的开发机器时,我都必须使用任务管理器或任何其他进程管理应用程序杀死 10 多个进程,才能从我的 IDE 中获得不错的性能。是的,这些是我的公司为了安全性和合规性而安装在我的计算机上的程序的流程。我想做的是拥有一个 .bat 文件或某种类型的脚本,我可以启动并终止有问题的进程。
有人已经知道该怎么做吗?
解决方案
您可以使用“taskkill”来完成此操作。使用 /IM 参数,您可以指定图像名称。例子:
taskkill /im somecorporateprocess.exe
你也可以这样做来“强制”杀死:
taskkill /f /im somecorporateprocess.exe
只需为要终止的每个进程添加 1 行,保存为 .bat 文件,然后放入启动目录中。问题解决了!
如果这是一个遗留系统, 杀戮 也会做同样的事情。
其他提示
taskkill /f /im "devenv.exe"
这将强制杀死 exe 名称为“devenv.exe”的 pid
相当于 nix'y Kill 命令中的 -9
由于 TASKKILL 可能在某些 Home/basic 版本的 Windows 上不可用,这里有一些替代方案:
TSKILL processName
或者
TSKILL PID
请记住 processName
不应该有 .exe
后缀,长度限制为 18 个字符。
另一种选择是 WMIC
:
wmic Path win32_process Where "Caption Like 'MyProcess.exe'" Call Terminate
wmic 提供比 taskkill 更大的灵活性。 wmic Path win32_process get
您可以看到可以过滤的可用字段。
我假设作为开发人员,您对计算机有一定程度的管理控制权。如果是这样,请从命令行运行 msconfig.exe。您甚至可以从启动中删除许多进程,从而无需使用上述解决方案终止它们。
得到 自动运行 来自发现索尼 Rootkit 的 Sysinternals 人员 Mark Russinovich...我用过的最好的软件,用于清理自动启动的东西。
下载 PSKill. 。编写一个批处理文件,为每个要终止的进程调用它,并传入每个进程的名称。
请找到以下逻辑,该逻辑适用于该条件。
如果我们简单地调用 taskkill /im applicationname.exe
, ,仅当该进程正在运行时才会终止。如果这个进程没有运行,就会抛出错误。
以便之前检查 takskill
被调用时,可以进行检查以确保执行 taskkill
仅当进程正在运行时才会执行,这样就不会抛出错误。
tasklist /fi "imagename eq applicationname.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "applicationname.exe"
我在这里编写了一个示例命令,您可以将其粘贴到您的 cmd
命令行提示符是为 chrome.exe
.
FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)
for 只接受所有 PID
下面列出了 tasklist
命令并执行 TASKKILL /PID
在每一个 PID
tasklist /FO Table /M "chrome*" /NH
如果您在批处理文件中使用 for,只需使用 %%P 而不是 %P