每次我打开公司拥有的开发机器时,我都必须使用任务管理器或任何其他进程管理应用程序杀死 10 多个进程,才能从我的 IDE 中获得不错的性能。是的,这些是我的公司为了安全和合规而安装在我的机器上的程序的流程。我想做的是有一个 .bat 文件或某种脚本,我可以用它来杀死有问题的进程。
有人知道怎么做这个吗?
每次我打开公司拥有的开发机器时,我都必须使用任务管理器或任何其他进程管理应用程序杀死 10 多个进程,才能从我的 IDE 中获得不错的性能。是的,这些是我的公司为了安全和合规而安装在我的机器上的程序的流程。我想做的是有一个 .bat 文件或某种脚本,我可以用它来杀死有问题的进程。
有人知道怎么做这个吗?
你可以用' taskkill '来做到这一点。使用 /IM 参数,您可以指定图像名称。
例子:
taskkill /im somecorporateprocess.exe
你也可以这样做来“强制”杀死:
例子:
taskkill /f /im somecorporateprocess.exe
只需为要杀死的每个进程添加一行,将其保存为 .bat 文件,然后添加到您的启动目录中。问题解决了!
如果这是一个遗留系统,PsKill也会这样做。
taskkill /f /im "devenv.exe"
这将强行杀死具有 exe 名称“devenv.exe”的 pid
相当于 nix'y kill 命令上的 -9
由于 TASKKILL 可能在某些家庭/基本版 Windows 上不可用,因此这里有一些替代方案:
TSKILL processName
或者
TSKILL PID
请记住,processName
不应该有.exe
后缀并且限制为 18 个字符。
另一种选择是WMIC
:
wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate
wmic 通过其类似 SQL 的匹配器提供比 taskkill 更大的灵活性。通过wmic Path win32_process get
您可以查看可以过滤的可用文件(并且%
可以用作通配符)。
我假设作为开发人员,您对您的机器具有一定程度的管理控制权。如果是这样,请从命令行运行 msconfig.exe。您甚至可以从启动中删除许多进程,从而无需使用上述解决方案杀死它们。
从发现 Sony Rootkit 的 Sysinternals 人 Mark Russinovich 那里获得Autoruns ……我用过的最好的软件,用于清理自动启动的东西。
下载PSKill。编写一个批处理文件,为您想要终止的每个进程调用它,并传入每个进程的名称。
请在以下条件下找到适用的逻辑。
如果我们简单地调用taskkill /im applicationname.exe
,它只会在该进程正在运行时才会终止。如果这个进程没有运行,它会抛出一个错误。
为了在takskill
调用之前进行检查,可以进行检查以确保taskkill
只有在进程正在运行时才会执行execute,这样它就不会抛出错误。
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
中列出的所有 s并在每个tasklist
TASKKILL /PID
PID
tasklist /FO Table /M "chrome*" /NH
如果您在批处理文件中使用 for 只需使用 %%P 而不是 %P