Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
已在运行CMD窗口中的Java run命令_Java_Windows_Cmd_Command Prompt - Fatal编程技术网

已在运行CMD窗口中的Java run命令

已在运行CMD窗口中的Java run命令,java,windows,cmd,command-prompt,Java,Windows,Cmd,Command Prompt,我正在创建一个小程序,通过使用GUI删除我的一些工作。 我现在拥有的是一个带有“开始”按钮的小程序,它可以启动基于CMD的应用程序。我需要做的是在CMD窗口中输入某个命令。我想添加一个按钮,为我填写此命令 这可能吗 注意:CMD是Windows的命令提示符 谢谢大家。这取决于基于CMD的应用程序如何接收输入 如果它从CMD窗口的输入流接收输入,本文将解释如何获取对输入流的引用并向其发送消息: 如果您的CMD窗口正在运行一个不接受输入的命令,并且您想要执行另一个命令,那么我认为您必须在一个单独的C

我正在创建一个小程序,通过使用GUI删除我的一些工作。 我现在拥有的是一个带有“开始”按钮的小程序,它可以启动基于CMD的应用程序。我需要做的是在CMD窗口中输入某个命令。我想添加一个按钮,为我填写此命令

这可能吗

注意:CMD是Windows的命令提示符


谢谢大家。

这取决于基于CMD的应用程序如何接收输入

如果它从CMD窗口的输入流接收输入,本文将解释如何获取对输入流的引用并向其发送消息:


如果您的CMD窗口正在运行一个不接受输入的命令,并且您想要执行另一个命令,那么我认为您必须在一个单独的CMD进程中运行第二个命令。

如果它是一个外部命令:

String command = "cmd";   //Replace with your command
Runtime.getRuntime().exec(command);
如果它是一个内部命令,那么这将不起作用,但有一个解决方法:创建一个包含命令的批处理文件,并将一个包含批处理文件路径的字符串作为参数

Runtime.getRuntime().exec("Temp.bat");
或者,您可以使用以下方法以编程方式编写批处理文件:

private void batch(String commands){
  try{
    String filename = "Temp.bat";
    File f = new File(filename);
    PrintWriter writer = new PrintWriter(f);
    writer.print(commands);
    writer.close();
    Runtime.getRuntime().exec(filename);

    long x = getTime + 3000;
    do{
      //Wait
    }while(getTime < x);

    f.delete();
  }catch(Exception ex){
    ex.printStackTrace();
  }
}

private long getTime(){
  SimpleDateFormat datef = new SimpleDateFormat("yyyyDDDHHmmssSSS");
  Date date = new Date();
  return Long.parseLong("" + datef.format(date));
}
private void批处理(字符串命令){
试一试{
字符串filename=“Temp.bat”;
文件f=新文件(文件名);
PrintWriter=新的PrintWriter(f);
writer.print(命令);
writer.close();
Runtime.getRuntime().exec(文件名);
长x=getTime+3000;
做{
//等等
}而(getTime
我认为您无法从Java应用程序控制CMD窗口。但是,你可以创建一个窗口,它看起来像一个CMD窗口,它可以按照你想要的任何方式运行。C++从C++应用程序获得它的输入。应用程序是封闭源代码,所以我不能改变其中的任何内容。C++应用程序是否从CMD命令行读取输入?如果是这样,那么java进程生成器方法应该工作相同。C++(DLL文件)打开一个CMD窗口来给出输出。因此DLL将其输出发送到CMD窗口。我想抓住那个窗口的内容。如果我可以通过每隔X秒将内容保存到一个文本文件并让Java读取该文本文件来修改DLL,那就很容易了。hmmm您可以重定向程序的输出,如下所示: