java - 如何使用java进程一条一条执行windows命令

标签 java

<分区>

我需要使用 nslookup 命令检查 DNS 配置。正确的检查方法已在以下链接中给出。 https://technet.microsoft.com/en-us/library/aa997324(v=exchg.65).aspx

现在 java 中的实际问题是如何在同一进程中一个接一个地执行命令,我必须捕获输出并根据输出我可能必须执行一些其他命令。截图如下。

Screenshot given below

很容易执行一个简单的命令,如“nslookup someIpAdrs”。但这里的要求是不同的。首先,我们必须进入 shell,在同一个 shell 中,我必须执行命令。

请建议我如何在 Java processBuilder 中做,或者是否有任何 java 库可以实现。

最佳答案

您需要使用执行原始命令的进程打开一个新的 PrintWriter 并在那里打印您的参数。

例如:

final Process p = Runtime.getRuntime().exec("nslookup");
final BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
final char[] buf = new char[20];
System.out.println(new String(buf, 0, in.read(buf)));
//Send next command here
new PrintWriter(p.getOutputStream(),true).println(<next command>);

然后您可以刷新缓冲区并随后读取输出。

关于java - 如何使用java进程一条一条执行windows命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47206423/

相关文章:

java - Mockito 非 stub 函数

java - 比较java中的utf-8字符串

java - ReentrantLock -> lockInterruptically() 有时不会检查中断状态?

java - 给定 WSDL 的 Web 服务客户端

java - 简单的java程序根据它们的值来处理canopy簇字符串

java - 当通过sql过程发生表更新时更新spring缓存

JavaFX - TextArea 的掩码文本

java - 用于 pre-1.5 假枚举的 EnumSet?

java - 这个常规代码行有什么问题?

java - Java中的byte[]到String : What does the output mean?