对于Java程序,我希望获得名称包含相同单词的所有进程(例如“cheese”)并杀死它们。
我搜索了stackoverflow,但我尝试过的所有可能性都不起作用。
我知道如何杀死任务但不知道如何获取名称包含相同单词的所有进程。
我该怎么做?
答案 0 :(得分:0)
注意:这仅适用于Windows计算机。
这将创建一个列表,其中包含名称中包含word
的所有流程。
public static ArrayList<String> getProccessWithString(String word){
ArrayList<String> list = new ArrayList<String>();
try {
String line;
Process p = Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
if(line.indexOf(word) > 0){
list.add(line);
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
return list;
}
它被称为:
ArrayList<String> list = getProccessWithString("word");
然后你可以使用循环来杀死它们:
for(int i = 0; i < list.size(); i++){
Runtime.getRuntime().exec("taskkill /F /IM " + list.get(i));
}
您需要以管理员身份运行此程序,因为taskkill
是一个提升的命令。