java - 如何使用 Java 中的 ProcessBuilder 将字符串写入 cmd 提示符?

标签 java

我有一个批处理 (.bat) 程序,要求该用户提供主机名和密码。 (两个字段)我正在使用一个单独的 Java 应用程序来收集以自动执行此任务,因此我需要它在脚本中一次输入多个主机名。然而,我很难使用 ProcessBuilder 来实现这个目标。 请看下面的代码:

我的这段代码仅将输入和输出重定向到java进程。但是,我只想写信给cmd。如果有什么办法请告诉我。谢谢

import java.io.IOException;

public class Main {
    public static void main(String[] args) throws InterruptedException,
            IOException {
        ProcessBuilder pb = new ProcessBuilder("cmd" ," /k d: && cd DATA\\Virtualization Scripts\\EMC ESXi Grab && Script_Run");
        //inherit IO
        pb.inheritIO();
        Process process = pb.start();
        process.waitFor();
    }
}

最佳答案

@Tharriott,根据我们的讨论,首先您必须像这样修改一下批处理脚本。我在下面提供了代码。

@ECHO OFF 
set host=%1 
set password=%2

echo Host Name : %host%
echo Password : %password%

"D:\UPSDATA\Virtualization Scripts\EMC ESXi Grab\EMC-ESXi-GRAB-1.3.10\emcgrab.exe" -host %host% -vmsupport -user root -password %password% -case 00000000 -legal -customer UPS -party 00000 -contact user -phone NA -email NA 

exit

假设批处理脚本的名称是 emc-grab.bat

现在您必须像这样运行上面的批处理文件。

:/emc-grab.bat

一个例子是这样的

D:/test/emc-grab.bat abcd.dellemc.com pa$$word99

现在下一步是什么?

在您的 java gui 程序中,捕获主机名和密码,然后在 processbuilder 类中,传递完整的命令以及文件名、主机名和密码。

我在下面提供了代码片段。

String hostNameAndPassword = "captured Host Name"+" "+"captured password";
ProcessBuilder pb = new ProcessBuilder("cmd" ,"some path:/emc-grab.bat "+hostNameAndPassword);

尝试一下,它会解决你的问题。

关于java - 如何使用 Java 中的 ProcessBuilder 将字符串写入 cmd 提示符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56368509/

相关文章:

java - Maven 3.3.1 ECLIPSE : -Dmaven. multiModuleProjectDirectory 系统属性未设置

java - 单击 ListView 中的任何项目时应用程序崩溃

java - 如何在jspx页面中发表评论

Java : Remove strange special characters from String

java - ArrayList正在添加随机值

java - XDocReport Java API : problem converting ODT to PDF

java - 使用kafka lib反序列化PRIMITIVE AVRO KEY

java - 将 BufferedImage 转换为 byte[],不会损失质量并增加大小

java - 运行我的程序会导致 java.lang.NoSuchMethodError : scala. Predef$.augmentString(Ljava/lang/String;)Lscala/collection/immutable/StringOps;

java - Joda时间转换查询