扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
我当时解决的办法是。
市中ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
p.getOutputStream()
p.getErrorStream()
都不停地往外读取内容。
原因是这样的,bat命令输出的内容会输出到一块缓冲区内存中。
如果你不及时读取出来,当缓冲区内存满了以后,
bat命令会停止执行。
所以办法就是要把执行bat命令的输出内容读取出来,不能让缓冲区满。
java可使用Runtime.exec执行bat文件,示例代码如下:
import java.io.*;
import java.util.*;
public class TestExec {
public void runbat(int name) {
String cmd = "cmd /c start D:/bat/"+name+".bat";
try {
Process ps = Runtime.getRuntime().exec(cmd);
System.out.println(ps.getInputStream());
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
public static void main(String[] args){
TestExec test1 = new TestExec ();
test1.runbat("abc");
}
}
其中,abc.bat可以是已经存在的bat,也可以是动态生成的bat(如果需要根据已有参数执行bat,则可以使用动态生成bat文件的方式)
public static void main(String[] args) {
try {
String command = "C:\\Users\\Administrator\\Desktop\\do.bat";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK"));//注意中文编码问题
String line;
while ((line = br.readLine()) != null) {
System.out.println("StartedLog=="+line);
}
br.close();
} catch (IOException e) {
}
}
自己试试吧,不知道可行不可行.
建议你用java
ANT
先写一个ANT的
BUILD.XML
(网上自己找下)
然后写脚本
a.bat
ant
-v
然后执行a.bat就行了
(2)
或者直接在BAT里写
JAVAC
*.java命令都可以。
在window下bat批处理文件调用实现java方法。
代码如下:
@echo off
echo 正在加密,请稍后....
echo path:%~dp0
set base=%~dp0
set class=%base%\bin
set libs=%base%\lib
set class_path=%class%;%libs%\c3p0-0.9.1.2.jar;%libs%\mysql-connector-java-5.0.8-bin.jar;
java -classpath %class_path% com.test.Main
@pause
classes目录是java编译后的class目录
libs目录存放的所要使用到的jar
startNet.bat启动的bat文件
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流