public static void main(String[] args)
{
String command = "cmd /c C:\\test.bat";
try
{
Runtime.getRuntime().exec(command);
}
catch (Exception e)
{
e.printStackTrace();
}
}
发现根本没效果,但也没报错,我直接点test.bat可以看到效果,请教各位,这样写,是不是漏了什么呢?
11 个解决方案
#1
Runtime.getRuntime().exec("cmd /c start C:\\test.bat");
在独立窗口显示结果好像需要加 start
#2
Runtime.getRuntime().exec("C:\\test.bat");
直接这样可以不?
直接这样可以不?
#3
"cmd /c start \"C:\\test.bat\""
路径好像要加上双引号。这样试试。
#4
你按照我的步骤走一遍:
1.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
2.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
3.
建立一个.java文件,mian方法是:
执行就可以弹出HelloWorld窗口
1.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
import javax.swing.*;
public class HelloWorld {//无论如何要记住这个类名,因为它是程序的入口
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setBounds(200, 200, 30, 50);
jFrame.add(new JLabel("HelloWorld"));//显示
jFrame.setVisible(true);
}
}
2.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
javac -d g:/ HelloWorld.java
java -classpath g:/ HelloWorld
3.
建立一个.java文件,mian方法是:
public static void main(String args[]) throws Exception {
Process process = Runtime.getRuntime().exec("g:/HelloWorld.bat");
process.waitFor();
}
执行就可以弹出HelloWorld窗口
#5
对比一下 很显然,
1.你的应该是批处理文件有问题
应该用对路径,比如我的 -d g:/ -classpath g:/
就是 批处理中要执行的另一程序路径定死
2.main方法中 process.waitFor();
1.你的应该是批处理文件有问题
应该用对路径,比如我的 -d g:/ -classpath g:/
就是 批处理中要执行的另一程序路径定死
2.main方法中 process.waitFor();
#6
说的不够清楚:
批处理中的内容中
你不应该用相对路径,因为批处理认识那个程序相对路径 可是java虚拟机却不认识了
批处理中的内容中
你不应该用相对路径,因为批处理认识那个程序相对路径 可是java虚拟机却不认识了
#7
#8
你的代码没有等待bat执行结束。
这样改:
这样改:
public static void main(String[] args)
{
String command = "cmd /c d:\\test.bat";
try
{
Process process = Runtime.getRuntime().exec(command);
process.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
}
}
#9
是的,应该是这个原因的了。现在正在想怎么改。
我的批处理,有点复杂,是要启动mysql服务的,不好改,还得研究下再说了。
#10
public static void main(String[] args) {
String command = "cmd /c start C:\\test.bat";
try
{
Runtime.getRuntime().exec(command);
}
catch (Exception e)
{
e.printStackTrace();
}
}
#11
忘了结贴了,解决了,确实是路径问题,谢谢
#1
Runtime.getRuntime().exec("cmd /c start C:\\test.bat");
在独立窗口显示结果好像需要加 start
#2
Runtime.getRuntime().exec("C:\\test.bat");
直接这样可以不?
直接这样可以不?
#3
"cmd /c start \"C:\\test.bat\""
路径好像要加上双引号。这样试试。
#4
你按照我的步骤走一遍:
1.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
2.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
3.
建立一个.java文件,mian方法是:
执行就可以弹出HelloWorld窗口
1.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
import javax.swing.*;
public class HelloWorld {//无论如何要记住这个类名,因为它是程序的入口
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setBounds(200, 200, 30, 50);
jFrame.add(new JLabel("HelloWorld"));//显示
jFrame.setVisible(true);
}
}
2.
G盘下建一个文件
文件名HelloWorld.bat
文件内容:
javac -d g:/ HelloWorld.java
java -classpath g:/ HelloWorld
3.
建立一个.java文件,mian方法是:
public static void main(String args[]) throws Exception {
Process process = Runtime.getRuntime().exec("g:/HelloWorld.bat");
process.waitFor();
}
执行就可以弹出HelloWorld窗口
#5
对比一下 很显然,
1.你的应该是批处理文件有问题
应该用对路径,比如我的 -d g:/ -classpath g:/
就是 批处理中要执行的另一程序路径定死
2.main方法中 process.waitFor();
1.你的应该是批处理文件有问题
应该用对路径,比如我的 -d g:/ -classpath g:/
就是 批处理中要执行的另一程序路径定死
2.main方法中 process.waitFor();
#6
说的不够清楚:
批处理中的内容中
你不应该用相对路径,因为批处理认识那个程序相对路径 可是java虚拟机却不认识了
批处理中的内容中
你不应该用相对路径,因为批处理认识那个程序相对路径 可是java虚拟机却不认识了
#7
#8
你的代码没有等待bat执行结束。
这样改:
这样改:
public static void main(String[] args)
{
String command = "cmd /c d:\\test.bat";
try
{
Process process = Runtime.getRuntime().exec(command);
process.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
}
}
#9
是的,应该是这个原因的了。现在正在想怎么改。
我的批处理,有点复杂,是要启动mysql服务的,不好改,还得研究下再说了。
#10
public static void main(String[] args) {
String command = "cmd /c start C:\\test.bat";
try
{
Runtime.getRuntime().exec(command);
}
catch (Exception e)
{
e.printStackTrace();
}
}
#11
忘了结贴了,解决了,确实是路径问题,谢谢