传递参数并使用java在Windows中运行.cmd文件

时间:2018-04-27 10:26:44

标签: java windows batch-file cmd solr

我想运行并将参数传递给" .cmd"使用Java程序的文件。我检查了现有的解决方案,但在我的情况下没有任何工作。

从命令行,我在进入目录C:/users/project/solr/bin

后在命令下运行
solr.cmd -s "C:users/github/example/solr-config"

因此,solr.cmd从其他目录获取参数,然后运行solr实例。

我试过这个,但我不确定如何向Runtime.getRuntime()提供参数:

     Runtime run = Runtime.getRuntime();

     Process p = null;  

     String cmd = "cmd /c start C:/users/project/solr/bin C:users/github/example/solr-config";
     Process pr = run.exec(cmd);

我已关注此链接:How do I run a batch file from my Java Application?

有人可以帮我这个。

2 个答案:

答案 0 :(得分:1)

我通过修改cmd来解决它,因为solr.cmd期望-s也作为参数:

String cmd = "cmd /c start C:/users/project/solr/bin/solr.cmd -s C:users/github/example/solr-config;

答案 1 :(得分:0)

"它不起作用"并且"它没有显示任何内容"。根据文件:

  

默认情况下,创建的子进程没有自己的终端或控制台。它的所有标准I / O(即stdin,stdout,stderr)操作将被重定向到父进程,在那里可以通过使用方法getOutputStream(),getInputStream()和getErrorStream()获得的流来访问它们。父进程使用这些流向子进程提供输入并从子进程获取输出。由于某些本机平台仅为标准输入和输出流提供有限的缓冲区大小,因此无法及时写入输入流或读取子进程的输出流可能导致子进程阻塞甚至死锁。

如果要检索进程可能在标准I / O上打印的数据,则必须从上述流中读取它们。