Java:从 Java 运行批处理脚本时检测用户提示

2023-12-13

我需要从 Java 执行一个批处理脚本,它执行以下操作

1)一旦启动,它就会执行一项漫长(长达几秒)的任务。

2) 之后,显示提示“密码:”。

3) 然后,用户输入密码并按 Enter 键。

4) 然后,脚本完成其工作。

我知道如何从 Java 启动脚本,我知道如何读取 Java 中批处理脚本的输出,但我不知道如何等待密码提示出现(我如何知道批处理脚本正在等待密码输入)。

所以,我的问题是:如何知道批处理脚本何时打印了提示?

目前,我有以下代码:

final Runtime runtime = Runtime.getRuntime();
final String command = ... ;

final Process proc = runtime.exec(command, null, this.parentDirectory);

final BufferedReader input = new BufferedReader(new InputStreamReader(
  proc.getInputStream()));

String line = null;

while ((line = input.readLine()) != null) {
 LOGGER.debug("proc: " + line);
}

那应该可以完成这项工作:

  public static void main(final String... args) throws IOException, InterruptedException {
    final Runtime runtime = Runtime.getRuntime();
    final String command = "..."; // cmd.exe

    final Process proc = runtime.exec(command, null, new File("."));

    final BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));

    StringBuilder sb = new StringBuilder();
    char[] cbuf = new char[100];
    while (input.read(cbuf) != -1) {
        sb.append(cbuf);
        if (sb.toString().contains("Password:")) {
            break;
        }
        Thread.sleep(1000);
    }
    System.out.println(sb);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:从 Java 运行批处理脚本时检测用户提示 的相关文章

随机推荐

  • Tomcat JDBC 连接在 Eclipse 中工作但不能独立运行

    我们正在经历升级数据库软件以及从 Tomcat 5 5 到 Tomcat 7 的过程 因此 我使用新的 JDBC 驱动程序 在本例中是推荐的 SQL Anywhere JDBC 4 0 驱动程序 它需要 ODBC 服务 我已经成功地让这一切
  • 如何获取每个应用程序的权限?如何在Android上以编程方式做到这一点?

    如何获取每个应用程序的权限详细信息 如何以编程方式做到这一点 我要显示 每个应用程序的应用程序权限详细信息 在文本视图上 但我尝试了但不行 你好 java import android app Activity import android
  • 在 Android 文件资源管理器中按文件类型过滤

    在我的应用程序中 我想让用户从文件资源管理器应用程序中选择文件 我已经能够通过使用以下代码 在 C Xamarin 中 来做到这一点 private void AddFile if IsFileExplorerAppInstalled To
  • 如何使用ajax在Django管理表格内联中读取/写入输入字段?

    我正在寻找使用 ajax 动态更新内联条目的方法 即 当用户从下拉框中选择一个项目时 可以用数据填充关联的输入字段 ajax 的views py 部分应该很简单 但对我来说有一个问题是如何在js中获取下拉框的名称 这些名称可以动态添加 以下
  • 如何在不同的 Spring 上下文之间共享 Spring bean?

    我们有一个使用 Spring BlazeDS 集成的应用程序 到目前为止 我们刚刚使用了 Spring 和 Flex 并且运行良好 我们现在还需要添加一些 Spring MVC 控制器 Spring BlazeDS 文档指出 执行此操作的方
  • 使用 C# 包装器从任务栏中删除应用程序?

    有没有办法为现有应用程序构建 C 包装器 以便我将其从任务栏中删除 更多信息 我有一个计时器应用程序 我想使用它 但没有使用 因为它很好 很糟糕 看https superuser com questions 92774 quickbooks
  • CSS 中的尾随行装饰标题

    我正在尝试创建带有一些精美装饰的标题标签 最终 我想达到这个目的 不过 我在文本后添加尾随线装饰时遇到问题 我最初的想法是有一个容器 然后在该容器中包含 h1 和包含该行的 span 标签 但我似乎不太能让该行与位于其上方的文本居中 我试过
  • 带底边框的文本框

    我希望有TextBox有底部边框 但绘制的图形为TextBox调整大小时会扭曲 损坏 因为Color Transparent 使用我找到的代码 我能够创建一个带下划线的文本框 具有透明顶部 左侧 右侧的绘制矩形 问题是当我调整表单 窗口的大
  • 从 html 文件解析图像 url

    我想搜索 html 文件 然后获取该页面上图像的 url 然后这个 url 应该被保存为一个字符串 仅此而已 问题是我真的不知道如何开始 我的应用程序当然知道图像所在页面的 url 我们以这个 url 为例 在此页面上 我需要大图像的 ur
  • 如何使用bash输入ssh密码? [复制]

    这个问题在这里已经有答案了 我每天都通过 ssh 连接到服务器 我经历了这个例程 IC001 Desktop user ssh email protected email protected s password Last login Tu
  • onConfigurationChanged 在 android 中任何时候都不会被调用

    我已经创建了示例程序来测试方向 如果纵向模式并且我以相反的方式倾斜手机 我希望我的示例应用程序反向纵向 在阅读了很多关于此的问题之后 认为我们需要使用 onConfigurationChanged Configuration newConf
  • 将 ModelEntity 悬停在 ARCamera 前面

    我试图让一个实体悬停在镜头前的同一位置 无论我如何移动设备 但我没有成功 我想我想围绕 y 用于横向移动 偏航 和 x 用于垂直平移 俯仰 旋转 我从 ARCamera 获取相机旋转 let distance Float 2 distanc
  • PHP 致命错误内存不足

    我在名为 RebuildSummary 的函数中调用以下两个函数 创建摘要 从文件插入数据 1 create summary函数 create summary 函数从数据库中获取活动数据 并使用 for 每个循环遍历活动 并将数据插入到以下
  • 使用 django 的默认视图在 django 中重置密码时出现 NoReverseMatch 异常

    当我使用 重置我的密码 按钮时 出现以下错误 Reverse for password reset confirm with arguments and keyword arguments uidb64 b MTI token 48i a4
  • 如何在android上从url加载pdf?

    我有一个包含 listView 的页面 每个项目都应该从 url 打开一个 pdf 文件 但我不知道如何从 url 加载 pdf 文件 甚至不知道如何加载 pdf 所以我问是否任何人都可以告诉我有关如何做到这一点的任何提示 谢谢 WebVi
  • ggplot2 - 在同一个图上绘制多个模型

    我有一个线性和非线性模型列表 这些模型源自测量相同两个变量的不同数据集x and y我想使用在同一个图上绘制stat smooth 这是为了能够轻松比较之间关系的形状x and y跨数据集 我正在尝试找出最有效的方法来做到这一点 现在我正在
  • .htaccess 将特定域重定向到特定页面

    我希望来自 urlnumberone com 和 urlnumbertwo com 的任何流量重定向到我网站上的几个特定页面 RewriteEngine on RewriteCond HTTP REFERER http www urlnum
  • 在较新版本的 CsvHelper 中,IWriterConfiguration.UseExcelLeadingZerosFormatForNumerics 的等效项是什么?

    我们目前正在将一堆旧的 NuGet 包升级到最新版本 CsvHelper 在我们使用的先前版本 2 x 和最新版本 12 x 之间移动了很多内容 变更日志没有提及很多这些更改 或者至少没有明确指出每个变更日志条目中更改了哪些属性或方法 这让
  • 页脚位置 - 底部和中心[重复]

    这个问题在这里已经有答案了 我正在编写一个网页 页面底部有固定的页脚 页面的内容具有特定的宽度并且居中 页脚也有特定的宽度并且必须居中 Issues 我不能使用postiton fixed 页脚不居中 页面内容是从数据库动态加载的 所以我无
  • Java:从 Java 运行批处理脚本时检测用户提示

    我需要从 Java 执行一个批处理脚本 它执行以下操作 1 一旦启动 它就会执行一项漫长 长达几秒 的任务 2 之后 显示提示 密码 3 然后 用户输入密码并按 Enter 键 4 然后 脚本完成其工作 我知道如何从 Java 启动脚本 我