【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】

简介: 内网穿透外网的那一篇,参正集1但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐。所以将这些任务写在JAVA程序中,启动一次程序就可以实现【内网穿透】的功能,多好啊! 首先把流程走一遍1.

内网穿透外网的那一篇,参正集1

但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐。

所以将这些任务写在JAVA程序中,启动一次程序就可以实现【内网穿透】的功能,多好啊!

 

首先把流程走一遍

1.D盘存放内网穿透工具 ,那就在D盘新建一个文件夹,用于存放bat文件的,起名字叫run cmd

2.在run cmd中新建一个文本文件

 

在新建的文本文件中粘贴如下的代码:

echo 
d:
cd ngrok_windows
natapp -config ngrok.cfg -subdomain zjlm 80
natapp -authtoken=0931c612e83742ec
pause

 

已经走过内网穿透过程的 ,应该对  这段比较熟悉。

echo        DOS命令,表示cmd启动的以下的dos命令都是显示的状态

d:            DOS命令,表示进入d盘

cd ngrok_windows   DOS命令,进入d:盘下的ngrok_windows文件夹

下面的两行在【正篇1】中有解释

pause      DOS命令,点击bat文件就可以直接启动cmd.exe,从而启动DOS窗口,但是会闪一下就没了,你可以试一下,加上pause之后可以起到暂停的作用

 

3.将这个a.txt文本文件更改为a.bat文件

 

4.新建java一个类,放入以下代码:

import java.io.IOException;


/**
 *  Java调用windows的DOS命令
 */
public class RunWindowsCommand{
    public static void main(String[] args) throws InterruptedException {
            try {
                String cmd = "cmd /c start "+"D:/run cmd/a.bat".replaceAll(" ", "\" \""); 
                Runtime.getRuntime().exec(cmd) ;
            } catch (IOException e) {
                e.printStackTrace();
            }
   
    }
}

 

其中,刚刚的文件夹名中带有空格即: run  cmd文件夹

这在java中无法识别,必须将其进行

.replaceAll(" ", "\" \"");处理,才可以。


5.效果图如下:

 

 再来看看原理如何
1.首先cmd.exe程序执行DOS命令就是调用一个一个的bat文件
2.bat文件中存放的就是DOS命令,可以是一条,也可以是多条
3.java程序要做的就是启动cmd.exe,找到.bat文件,运行它

 

相关文章
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
346 1
|
Java Linux Windows
windows版java版本管理器
本文介绍了如何在Windows上使用JDK版本管理器jvms来管理多个Java版本,包括下载、初始化、列出本地安装的JDK版本、在线查看可用版本、切换和安装特定版本的Java。
4480 0
windows版java版本管理器
|
Linux Windows
Windows系统批量创建文件夹的技巧
Windows系统批量创建文件夹的技巧
709 1
|
Windows
windows 文件夹视图全局生效
【8月更文挑战第31天】在 Windows 中,要使文件夹视图设置全局生效,请先在一个文件夹中设置视图模式和排序方式等,然后点击“查看”选项卡中的“选项”按钮,打开“文件夹选项”,切换到“查看”选项卡,点击“应用到文件夹”按钮以确认设置。这样,大多数文件夹将采用相同视图。不过,部分特殊文件夹可能不遵循此设置。
632 3
|
Windows
windows 文件夹视图全局生效
【8月更文挑战第20天】在Windows中实现文件夹视图全局设置:首先调整任一文件夹的视图样式,如选择“大图标”或“详细信息”。接着设置排序和分组选项。随后,在该文件夹的“查看”选项卡中点击“选项”,在“文件夹选项”的“查看”标签下点击“应用到文件夹”。确认后,所有文件夹将采用相同视图。注意:特定文件夹可能不受此设置影响。
1083 3
|
Java Windows
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
372 1
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
Java Windows
windows系统bat批处理 一键配置java jdk环境变量
windows系统bat批处理 一键配置java jdk环境变量
678 4
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
283 0
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
268 0