【发布时间】:2014-09-25 17:07:51
【问题描述】:
我在从 java 运行这个令人困惑的 windows 命令时遇到了一点问题,我找不到任何与我试图做的代码类似的东西。
基本上,windows 命令会杀死任何与具有 CLOSE_WAIT 状态并与指定的特定 ip:port 相关的套接字相关的 PID。我的问题是我很难使用 Runtime.getRuntime().exec() 让它运行。
String[] command = {"cmd /c for /f \"tokens=5\" %a in ('netstat -noa -p tcp ^| find /i \"CLOSE_WAIT\" ^| find /i \""+ip+":443\" ') do if not \"%a\"==\"0\" echo taskkill /pid %a"};
Process runCommand = Runtime.getRuntime().exec(command);
runCommand.waitFor();
执行此操作时,我目前收到错误消息:
class java.io.IOException 消息:无法运行程序“C:/ cmd /c for /f "tokens=5" %a in ('netstat -noa -p tcp ^| 找到 /i "CLOSE_WAIT" ^| find /i "ip:443" ') 如果不是 "%a"=="0" echo taskkill /pid %a" 则执行: CreateProcess error=2, 系统找不到指定的文件
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
先尝试在
cmd中执行该命令并检查该命令是否为有效命令! -
您是否尝试过使用 Windows 命令创建 .bat 文件并通过 runtime.exec() 运行 .bat?
-
嗯,我实际上刚刚做了,我得到了一个 '|在这个时候出乎意料'错误消息我不想通过 bat 文件运行它,因为这会涉及到我的代码库中添加一些混乱,我需要传递我想要关闭套接字的系统的 ip。我尽量保留尽可能少的文件。
标签: java windows command-line