Java-java bat wind7 失败 xp成功

发布于 2016-12-14 12:47:20 字数 622 浏览 1142 评论 1

问题描述:
java 调用bat文件执行相关操作:结束某个进程。在XP下运行正常,但在win7 下无法运行:提示 信息 :
'C:Windowssystem32tskill.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件.
JAVA代码:

     Runtime run = Runtime.getRuntime();
String command = "cmd /c D:\vkill.bat";
Process process = run.exec(command);
InputStream fis1 = process.getErrorStream();
BufferedReader br = new BufferedReader(new InputStreamReader(fis1,"gb2312"));
String line = "";
while((line = br.readLine())!=null)
{
System.out.println(line);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-09-17 15:43:52

为何不将脚本中的内容直接放到 string 里面试试呢,
感觉是你的 pc 上 tskill.exe 可能值得不存在。

附上一份自己的 Windows 执行命令方法:

/** 执行 shell 命令之后返回 String 类型的结果 */
public static StringexecShellStr(String cmd)
{
// Windows 命令行:
String[] cmdStrings = new String[] {"cmd", "/c", cmd};
// 类Unix 命令行:
// String[] cmdStrings = new String[] {"sh", "-c", cmd};
String retString = "";

try
{
Process process = Runtime.getRuntime().exec(cmdStrings);
BufferedReader stdout =
new BufferedReader(new InputStreamReader(
process.getInputStream()), 7777);
BufferedReader stderr =
new BufferedReader(new InputStreamReader(
process.getErrorStream()), 7777);

String line = null;

while ((null != (line = stdout.readLine()))
|| (null != (line = stderr.readLine())))
{
if (false == isStringEmpty(line))
{
retString += line + "n";
}
}

}
catch (Exception e)
{
e.printStackTrace();
}

return retString;
}

更新:
如果只有 Windows 7 有问题的话,那就是权限的问题啦,
貌似网上也没啥特别好的解决方案,如果只是自己用的话,

可以尝试使用 超级管理员 登录后,然后在执行就没有问题了
或者通过 管理员权限 启动命令行,然后手动调用 java xxxClass 也具备管理员权限

祝好,
斑驳敬上

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文