我正在尝试从我的java代码运行批处理文件,但不幸的是我不能 正确地运行它。实际上批处理文件正在运行,但只是批处理文件的第一行 正在运行,所以请给出解决方案,这里是代码和批处理文件。
class bata
{
public static void main(String [] args)
{
try
{
Runtime.getRuntime().exec("start_james.bat");
}
catch(Exception e) {}
}
}
,批处理文件是
cd\
c:
cd C:\Tomcat 5.5\webapps\mail_testing\james-2.3.2\bin
run.bat
start
答案 0 :(得分:1)
您期望cd:
做什么?这对我来说不合适......
如果批处理文件只运行另一个批处理文件,为什么不运行该目标批处理文件?如果您担心初始工作目录,请使用带有File
参数的重载来说明要使用的目录。例如:
File dir = new File("C:\\Tomcat 5.5\\webapps\\mail_testing\\james-2.3.2\\bin");
Runtime.getRuntime().exec("start_james.bat", null, dir);
答案 1 :(得分:1)
如果所有其他答案(使用有效的批处理文件)不起作用,请尝试直接执行cmd.exe,如下所示:
File dir = new File("D:\\tools\\bin");
Runtime.getRuntime().exec("c:\\windows\\system32\\cmd.exe /c start_james.bat", null, dir);
您还可以使用%SystemRoot%环境变量来获取cmd.exe的绝对路径。
答案 2 :(得分:0)
java中是否存在某些内容,您可以使用完整路径直接调用批处理文件?
我的意思是,你为什么需要更改目录?
另外,cd:
有什么用?它不是DOS中的有效命令,除非您使用* nix。
答案 3 :(得分:0)
我认为他想要更改为目录然后运行批处理文件。你能试试吗?
cd /d C:\Tomcat 5.5\webapps\mail_testing\james-2.3.2\bin
run.bat
start
答案 4 :(得分:0)
“cd:”应该是你可以使用GOTO命令跳转的标签吗?但是,使用“:labelname”声明标签。这应该是您的批处理执行在第一行之后停止的原因。
答案 5 :(得分:0)
这就像一个魅力:
Runtime run = Runtime.getRuntime();
try
{
System.out.println("Start Running the batch file");
Process p = run.exec(new String[]{"cmd.exe","/c", "start", "C:/Users/sony/Documents/NetBeansProjects/CodeReview/src/codereview/install.bat",i,j,m,l});
System.out.println("Completed");
}
catch (Exception e)
{
}
这里i,j,k,l是传递给批处理文件的参数