【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】
内网穿透外网的那一篇,参正集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开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】的更多相关文章
- 20155330 实验一《Java开发环境的熟悉》(Windows+IDEA)实验报告
实验知识点 JVM.JRE.JDK的安装位置与区别: 命令行运行javac:java:javac -cp; java -cp: PATH,CLASSPATH,SOURCEPATH的设定方法与应用: 包 ...
- (转)Memcached 在windows下的java使用
Memcached 在windows下的java使用 研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...
- windows下编译java源文件的编码错误
import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...
- 基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案
基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案 最近在研究Java,涉及命令行编译,使用notepad++编辑器,然后使用javac编译: 之前的几个文件没有中文的内容,都没 ...
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- 如何在Windows下查看JAVA端口占用情况(阿里面试)
如需要确定谁占用了9050端口 为例: 1.Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\>netstat -ano 协议 本地地址 外部地址 状态 ...
- 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...
- java文件操作 之 创建文件夹路径和新文件
一:问题 (1)java 的如果文件夹路径不存在,先创建: (2)如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加 (3)File myPath = new File ...
随机推荐
- 基础03 JVM到底在哪里?
1.Java是编译型语言还是解释型语言? 是解释型定义: 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序.然后,可直接运行这个程序. 解释型语言:把做好的源程序翻译一句,然后执行一句,直至 ...
- TcxComboBox控件说明
http://www.cnblogs.com/huangygdelphi/articles/2648490.html 属性: Text:ComboBox 的文本信息 EditText: 也是给Comb ...
- ABAP 供应商、工厂对应公里数维护
*&---------------------------------------------------------------------* *& Report ZMMR011 ...
- How can I fix “Compilation unit name must end with .java, or one of the registered Java-like extensions”?
How can I fix “Compilation unit name must end with .java, or one of the registered Java-like extensi ...
- Mysql 练习 总结
insert into Course values ('); #---------------Teacher--添加信息---- insert into Teacher values (','李成', ...
- 【python】类变量和对象变量
来源:http://www.cnblogs.com/gtarcoder/p/5005897.html python是一种解释性的语言,任何变量可以在使用的时候才声明以及定义,也可以在程序运行的任何位置 ...
- 数据库的日志数据库(_log.ldf)文件太大,如何压缩
DUMP TRANSACTION TCB WITH NO_LOGBACKUP LOG TCB WITH NO_LOGDBCC SHRINKDATABASE(TCB) 执行这三条语句就可以了,这里的TC ...
- PCH文件配置路径
"项目" >> Build Settings >> Preflx Header >> $(SRCROOT)/项目名/XXX.pch
- 51nod1049(计算最大子段和)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1049 题意:又是仲文题诶- 思路:暴力会超时,又好像没什么专门 ...
- FastPolice项目总结
This is the final homework for spatial information Mobile Service Lesson.It generally inclusived the ...