在使用java的windows中启动cmd时出错?
以下方法在Windows中启动在使用java的windows中启动cmd时出错?,java,cmd,ioexception,bluej,Java,Cmd,Ioexception,Bluej,以下方法在Windows中启动cmd,并获取需要运行的命令的参数 我使用以下命令测试了此方法:netusers,它运行良好,并打印了用户帐户。但是如果我运行dir命令,我会得到以下错误: java.io.IOEXception: Cannot run program "dir": CreateProcess error=2, The system cannot find the file specified (in java.lang.ProcessBuilder) 代码: private S
cmd
,并获取需要运行的命令的参数
我使用以下命令测试了此方法:netusers
,它运行良好,并打印了用户帐户。但是如果我运行dir
命令,我会得到以下错误:
java.io.IOEXception:
Cannot run program "dir": CreateProcess error=2, The system cannot find the file specified (in java.lang.ProcessBuilder)
代码:
private String commandOutPut;
public void startCommandLine(String s) throws IOException{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(s); // you might need the full path
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String commandOutPut;
while ((commandOutPut = br.readLine()) != null) {
this.commandOutPut = this.commandOutPut + "\n" + commandOutPut;
}
System.out.println(this.commandOutPut);
}
不知道这种感觉是否对你有帮助。但是,似乎“网络用户”被识别为Windows命令,因为“执行”对话框可以运行它。 但是,由于某些原因,“dir”命令不是。尝试运行时,Windows响应未找到命令
另外,我也尝试了使用内联参数运行命令,但这些参数被忽略了。(抱歉英语不好)很显然,您的方法不会启动
cmd
。你是怎么想到这个的
net
命令是一个独立的命令,因此它可以正常运行,但是dir
命令不是独立的,它是cmd.exe
的内部命令,因此如果不启动cmd.exe
来执行它,则无法运行它
要让它工作,你必须传递的不是
dir
,而是cmd.exe/c dir
或类似的东西。我最好的猜测是,这是因为“net”是一个真正的可执行文件(有一个文件WINDIR\System32\net.exe),而“dir”“是命令解释器的内置命令-它没有可执行文件,直接在cmd.exe中执行
但是,无论您如何绕过这个问题,都可以在cmd进程中调用“dir”命令。语法(根据)为:
网站上还有一些相关的答案:
您可以为此使用以下代码 导入java.io.*
public class demo
{
public static void main(String args[])
{
try
{
Process pro=Runtime.getRuntime().exec("cmd /c dir");
pro.waitFor();
BufferedReader redr=new BufferedReader(
new InputStreamReader(pro.getInputStream())
);
String ln;
while((ln = redr.readLine()) != null)
{
System.out.println(ln);
}
}
catch(Exception e) {}
System.out.println("Done");
}
}
例如,如果我想导航到某个地方,然后执行另一条命令,您可以这样做,比如==>Process pro=Runtime.getRuntime().exec(“cmd/c start cmd.exe/K\”cd d://&dir\”;
public class demo
{
public static void main(String args[])
{
try
{
Process pro=Runtime.getRuntime().exec("cmd /c dir");
pro.waitFor();
BufferedReader redr=new BufferedReader(
new InputStreamReader(pro.getInputStream())
);
String ln;
while((ln = redr.readLine()) != null)
{
System.out.println(ln);
}
}
catch(Exception e) {}
System.out.println("Done");
}
}