我需要用java调用一个用java生成的批处理文件(.bat) 代码如下:
Date date = new Date();
String s = "";
try {
File f = new File("c:\\produce\\"+date+"\\"+date+".bat");
if(!f.exists()){
f.createNewFile();//不存在则创建
BufferedReader input = new BufferedReader(new FileReader(f));
if(input.readLine()==null){
s += "net stop mysql \r\n";
s += "xcopy \"c:\\produce\\"+date+"\\*.*\" \"E:\\Program Files\\MySQL\\MySQL Server 5.0\\data\\test\\\" /y \r\n";
s += "net start mysql \r\n";
}
System.out.println(s);
input.close();
BufferedWriter output = new BufferedWriter(new FileWriter(f));
output.write(s);
output.close();
}
Runtime.getRuntime().exec("c:\\produce\\"+date+"\\"+date+".bat");
最后生成的批处理文件如下
net stop mysql
xcopy "c:\produce\2013-01-26\*.*" "E:\Program Files\MySQL\MySQL Server 5.0\data\test\" /y
net start mysql
下面问题来了:
java运行完连带创建的批处理文件也运行了,复制的功能实现了,但是注意:批处理中第一句(net stop mysql)停止了mysql在windows下的服务项,批处理最后一句(net start mysql)却并未重新开启mysql在windows下的服务项(我的操作系统是winXP),也就是说我运行完这个java代码后,我的mysql服务被停止了。
我就疑惑:是不是java运行这个批处理没有运行完?希望大家帮我解决一下。
java
mysql
windows
server
------解决方案--------------------
为分而来!分............................................................................................................40分
抢分而来。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
40分夺分而走 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
谢谢@329%4023