Java Runtime.getRunTime().exec(CMD) 不支持管道

2023-12-05

我正在尝试编写一个程序,该程序将显示并能够使用 JFrame 窗口更新您的 IP 地址设置。我正在考虑纯粹在 Windows 上运行它,因此我尝试能够使用 netsh windows 命令来检索/设置详细信息。

Windows命令:netsh interface ip show config name="Local Area Connection" | Find "IP"返回的正是我想要的,但是我编写的代码将无法通过管道工作,只有当我编写到“本地连接”部分时它才会工作。

有什么方法可以使用管道功能来专门返回 IP 地址吗?我读到您可以将该行作为字符串数组传递,即 String[] cmd = netsh........

package ipchanger;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class test {

    private String CMD;

public void executecommand(String CMD) {
        this.CMD = CMD;

        try {
            // Run whatever string we pass in as the command
            Process process = Runtime.getRuntime().exec(CMD);

            // Get input streams
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
            BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            // Read command standard output
            String s;
            System.out.println("Standard output: ");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);

            }

            // Read command errors
            System.out.println("Standard error: ");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
}


public test() {
    String FINDIP = "netsh interface ip show config name=\"Local Area Connection\" | Find \"IP\"";
    //System.out.println(FINDIP);
    executecommand(FINDIP);

}


public static void main(String[] args) {
    new test();
}
}

我想你们也许能帮忙。


幸运的是,有一种方法可以运行包含以下内容的命令:pipes。该命令必须带有前缀cmd /C. e.g.:

public static void main(String[] args) throws Exception {
    String command = "cmd /C netstat -ano | find \"3306\"";
    Process process = Runtime.getRuntime().exec(command);
    process.waitFor();
    if (process.exitValue() == 0) {
        Scanner sc = new Scanner(process.getInputStream(), "IBM850");
        sc.useDelimiter("\\A");
        if (sc.hasNext()) {
            System.out.print(sc.next());
        }
        sc.close();
    } else {
        Scanner sc = new Scanner(process.getErrorStream(), "IBM850");
        sc.useDelimiter("\\A");
        if (sc.hasNext()) {
            System.err.print(sc.next());
        }
        sc.close();
    }
    process.destroy();
}

Notes

  • Windows使用的控制台IBM850编码。看java控制台输出的默认字符编码.
  • See 愚蠢的扫描仪技巧... for useDelimiter("\\A").
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Runtime.getRunTime().exec(CMD) 不支持管道 的相关文章

随机推荐

  • `use std::io::Result as IOResult;` 比 `use std::io;` 仅仅引用 Rust 中的 `io::Result` 更高效吗?

    在学习 Rust 的过程中 我看到了人们导入库的多种方式 例如std io Result 例如 use std io Result as IOResult and pub type IOResult
  • R 中的表情符号 [UTF-8 编码]

    我正在尝试对 R 进行表情符号分析 我存储了一些带有表情符号的推文 这是我要分析的推文之一 gt tweetn2 1 Programme du week end xed xa0 xbd xed xb2 x83 xed xa0 xbc xed
  • Rails 迁移抱怨使用回形针的未定义方法“附件”

    Lemmie 在开头说我对 Rails 还很陌生 我们的应用程序使用回形针 3 2 4 来管理附件 像往常一样 我生成了一个类似于以下内容的迁移 class AddAttachmentPhotoToPhpfoxUsers lt Active
  • 是否有必要在 C# 中显式删除事件处理程序

    我有一堂课提供一些活动 该类是全局声明的 但不是在该全局声明上实例化的 它是根据需要在需要它的方法中实例化的 每次方法中需要该类时 都会对其进行实例化并注册事件处理程序 在方法超出范围之前是否有必要显式删除事件处理程序 当方法超出范围时 类
  • 为 Windows 上的 Lua 构建 lua 文件系统

    我对构建 makefile 没有任何线索 我正在尝试在 Windows 7 x86 中构建 luafilesystem 以便与 Lua for Windows 一起使用 我已经在互联网上搜索了教程 但我就是无法弄清楚 我在开发人员命令提示符
  • 如何使用 UIImagePickerController 显示所有相机控件?

    使用 UIImagePickerController 时 我无法显示相机控件 具体来说 我需要能够在慢动作 视频 照片 方形和全景之间进行选择 我使用的代码的基本部分是 UIImagePickerController pc UIImageP
  • 从 C# 修改任何窗口的不透明度

    是否可以从 C 修改所有打开的窗口的不透明度 我在 google 上搜索了最小化窗口 我发现这可以通过 pInvoke 调用实现 它甚至起作用了 同样 是否可以从 C 更改所有打开的窗口的不透明度 另外 我不喜欢 MFC 的东西 还有什么工
  • 测量执行单个指令的时间

    有没有办法使用 C 或汇编程序甚至 C 来准确测量执行 ADD 指令所需的时间 是的 有点 但它并不平凡 并且产生的结果是almost毫无意义 至少在最现代的处理器上是这样 在相对较慢的处理器上 例如 从英特尔系列中的原始奔腾处理器开始 在
  • 将 tf.keras.utils.image_dataset_from_directory 与标签列表一起使用

    我有目录示例中相应数量的文件的标签列表 1 2 3 train ds tf keras utils image dataset from directory train path label mode int labels train la
  • raw 文件夹中文本文件中的除号

    我的 android 的 txt 文件中有 当这个除法符号显示在 Android 设备上时 我看到 更糟糕的是 我的笔记本电脑键盘上没有除号 我使用了维基百科上的标志 猜猜我该如何解决这个问题 您应该对任何符号 例如此处的除号 使用 Uni
  • 如何使用jquery设置多个CSS显示属性值

    好吧 这让我有点抓狂 我正在使用 jQuery css 方法try设置类所需的多个 Flexbox 显示属性 问题是 它只保留最后一个 关于如何使用 jQuery 执行此操作的任何想法 或者这是不可能的 到目前为止 这是我尝试过的 depa
  • 如何指定CSS类的顺序?

    我对 CSS 和class属性 我一直认为 我在属性值中指定多个类的顺序是有意义的 后面的类可以 应该覆盖前面的定义 但这似乎不起作用 这是一个例子
  • 如何分配给匹配分支内的匹配表达式中使用的变量?

    我正在尝试实现一个通用功能join 它可以在任何迭代器的迭代器上工作 我的借用检查器有问题match里面的表达式next 方法实施 这是我的代码的简化版本 pub struct Join i where I Iterator I Item
  • C# - Excel 2013 如何更改图表样式

    我正在尝试更改 excel 2013 中图表的样式 但它只更改颜色 Range chartRange ChartObjects wsCharts ChartObjects workSheet ChartObjects Type Missin
  • 以编程方式将 id 添加到 R.id

    我正在创建一个EditText然后我尝试在单元测试中引用该对象 添加新内容的最佳方式是什么id to R id对于这个动态创建的对象 以便我稍后可以通过findViewById 在单元测试中 您可以使用 xml 资源文件设置稍后将在 R i
  • Bootstrap 4方格

    我想用 Bootstrap 4 创建一个响应式的正方形网格 为此 我正在做这样的事情 一行 div class container div class row div class col div div class col div div
  • 文本区域不能有默认值[重复]

    这个问题在这里已经有答案了 请检查这些行
  • Spring RedirectAttributes:addAttribute() 与 addFlashAttribute()

    到目前为止我的理解是我们可以指定您的控制器请求映射方法重定向属性参数并用请求重定向时的属性填充它 Example RequestMapping value hello method GET public String hello Redir
  • 使用 Nestjs 提供公共和私有端口服务

    我正在构建一个旨在为移动应用程序提供服务的应用程序 除了为客户提供服务外 它还将具有多种后台功能 我们正在使用swagger我们确实希望能够访问后台端点的 swagger 文档 但是 我们不想公开暴露我们的所有端点 假设将所有端点公开是一个
  • Java Runtime.getRunTime().exec(CMD) 不支持管道

    我正在尝试编写一个程序 该程序将显示并能够使用 JFrame 窗口更新您的 IP 地址设置 我正在考虑纯粹在 Windows 上运行它 因此我尝试能够使用 netsh windows 命令来检索 设置详细信息 Windows命令 netsh