java执行bat文件的问题
packagecom.polyphylla;importjava.io.IOException;importjava.io.InputStreamReader;impor...
package com.polyphylla;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class WinBat {
public static void main(String[] args) throws IOException,
InterruptedException {
Process p = Runtime.getRuntime().exec(
System.getProperty("user.dir") + "/wmic.bat");
p.getOutputStream().close();
LineNumberReader br = new LineNumberReader(new InputStreamReader(p
.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
wmic.bat的内容是:
wmic process get Caption,CommandLine,KernelModeTime,ProcessId,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount
执行结果是无限循环输出的:
F:\Workspaces\eclipse3.4\TestDLL>wmic process get Caption,CommandLine,KernelModeTime,ProcessId,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount
F:\Workspaces\eclipse3.4\TestDLL>wmic process get Caption,CommandLine,KernelModeTime,ProcessId,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount
我想要的结果是:正确的执行结果
各位帮忙看一看,解决后另有加分。 展开
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class WinBat {
public static void main(String[] args) throws IOException,
InterruptedException {
Process p = Runtime.getRuntime().exec(
System.getProperty("user.dir") + "/wmic.bat");
p.getOutputStream().close();
LineNumberReader br = new LineNumberReader(new InputStreamReader(p
.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
wmic.bat的内容是:
wmic process get Caption,CommandLine,KernelModeTime,ProcessId,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount
执行结果是无限循环输出的:
F:\Workspaces\eclipse3.4\TestDLL>wmic process get Caption,CommandLine,KernelModeTime,ProcessId,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount
F:\Workspaces\eclipse3.4\TestDLL>wmic process get Caption,CommandLine,KernelModeTime,ProcessId,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount
我想要的结果是:正确的执行结果
各位帮忙看一看,解决后另有加分。 展开
4个回答
展开全部
while ((line = br.readLine()) != null) {
死循环
死循环
追问
将bat文件的内容直接复制到exec()中就会得到正确结果,不是死循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bat文件有问题
追问
那该怎么写?
双击可以运行出正确结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没问题啊
更多追问追答
追问
你是怎么执行的?把bat文件的路径传进去有问题,直接把bat文件里的内容写在exec()中没有问题。在我这是这样的。
追答
wmic.bat的命令复制到命令行运行(系统盘运行)是死循环,java没问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询