我需要一个java方法,它将读取命令提示符输出并将其存储到要读入Java的字符串中。获取命令提示输出到Java中的字符串
这是我迄今为止,但没有正确工作。
public void testGetOutput() {
System.out.println("\n\n****This is the testGetOutput Method!****");
String s = null;
String query = "dir " + this.desktop;
try {
Runtime runtime = Runtime.getRuntime();
InputStream input = runtime.exec("cmd /c " + query).getInputStream();
BufferedInputStream buffer = new BufferedInputStream(input);
BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));
String line = "";
try {
while ((line = commandResult.readLine()) != null) {
s += line + "\n";
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}//end testGetOutput()
我认为问题是当我尝试将查询更改为将执行HandBrakeCLI.exe的命令。当程序运行时(但似乎已暂停)看着我的系统,它显示出HandBrakeCLI.exe正在我的IDE下运行的cmd窗口下运行。所有这一切都有道理,但HandBrakeCLI.exe不会退出,所以我猜这就是为什么我无法读取输出作为我的程序输入。
所以,在那之后。我的大问题是:我的查询完成后如何让HandBrakeCLI.exe关闭,以便我可以得到它的输出? 只是额外的信息,上面的方法和我为HandBrakeCLI扫描DVD方法之间的唯一区别是查询变量是不同的。像这样的例子:
String query = "C:\Users\Kent\Desktop\HBCLI\HandBrakeCLI -t --scan -i "C:\Users\Kent\Desktop\General Conference DVDs\Sources\174th October 2004\DVD 1"; //this is actually a variable in the DVD object, but here's an example'
哦,顺便说一下,当我在一个普通命令提示符下运行该查询,它正是我想要的它,让我所有的输出我拼命的愿望!
这里是原来的问题(我不知道如何重新提交问题):
我一直在到处找,不能想出解决办法。我不确定我发现的内容甚至与我想要做的事情有关。我还没有很多代码,所以它不会做太多的代码,我认为这应该很简单,所以我会在这里给出一些截图。因此,这里是我的任务:
扫描文件夹里面充满翻录DVD文件夹(与VOB文件等VIDEO_TS文件夹),并且这些文件夹名称存储为DVD的标题。
使用HandBrakeCLI扫描每个文件夹并将输出存储为字符串。
将字符串正确表示以标识每个标题,章节和语言。
生成查询退给HandBrakeCLI批量编码在每个标题为每个DVD每章每一种语言(你可以看到我为什么要自动执行此!)
存储这些查询的*。蝙蝠文件
我不确定的唯一部分是第2步!我可以很容易地做其他事情。我已经阅读了很多关于OutputStreams的内容,但我似乎无法理解它是如何工作的。我真的只需要得到输出到一个字符串,我可以正则表达式来获得我需要的东西。下面是我需要输入什么,什么我需要从输出到剥离截图:
输入到HandBrakeCLI:
输出扫描:
Jarrod,感谢您的快速响应!我会尽力实现这一点,并让你知道它是怎么回事! – kentcdodds
完美!我不完全确定它是如何工作的。但是我会稍微查看一下以找出答案。但是,它的功能就像一个魅力!现在我只需要将所有这些东西进行正则表达式!无论如何,谢谢你的帮助!哦,我不确定Maven是什么。我的IDE是Netbeans。我不需要添加的东西。再次感谢! –
kentcdodds