【问题标题】:Sending command confirmation to windows console向 Windows 控制台发送命令确认
【发布时间】:2015-10-15 10:24:10
【问题描述】:

我已经成功地从 java 调用了一个 Windows 控制台来使用 zlib 解压缩一个字符串,如下所示:

    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd.exe /c start z -d psw.txt", null, new File("C:\\users\\dlopez\\Encrypted\\ "));

在此之后我被问到是否要覆盖文件并且我必须表示是但我不知道如何在执行命令后从 java 中执行此操作。

我该怎么做?

谢谢

【问题讨论】:

  • 您真的在使用相当旧的 zlib 二进制文件吗?我的建议:要么获取当前的解压缩程序,要么使用 Java 库进行提取。您是否检查过是否有一个参数告诉 zlib 静默覆盖?如果不是,您可以将“y”写入进程的输出流

标签: java windows console zlib


【解决方案1】:

您可以像这样响应控制台提示:

        Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("cmd.exe /c start z -d psw.txt", null, new File("C:\\users\\dlopez\\Encrypted\\ "));
    new PrintWriter(proc.getOutputStream()).println("y");

【讨论】:

  • 感谢您的回复。我尝试了新的 PrintWriter 但这不起作用。可能是因为控制台来自 zLib 本身吗?
  • 对,这样你只能通过操作系统提供给每个进程的标准输入和标准输出进行通信,而不是通过应用程序的 UI。在 ZLIB 的特殊情况下,您可以直接从 Java 中使用它,如下所述:docs.oracle.com/javase/7/docs/api/java/util/zip/…
【解决方案2】:

我发现了如何使用 -r 命令解决它

rt.exec("cmd.exe /c start z -d -r psw.txt", null, new File("C:\\users\\dlopez\\Encrypted\\ "));

这样我替换文件而不询问我是否愿意

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 2017-12-08
    • 2020-03-03
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多