您可以将CD和批处理文件编码为cmd.exe/K的值.从doco(cmd /?):
请注意,如果用引号括起来,则由字符串接受由命令分隔符"&&"分隔的多个命令.
例如:
cmd /C "CD C:\ && Dir"
cmd /C "CD C:\Windows && Dir"
cmd /C "CD C:\Windows && MySuperSuperBatchFile"
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请运行:
cmd /?
Run Code Online (Sandbox Code Playgroud)
从命令行.
警惕Java的执行官.如果批处理过程填充输出缓冲区,它可能会挂起,并导致其他奇怪的问题.
我建议你看看apache exec.特别是根据您的需要,您应该注意Executor接口有一个setWorkingDirectory方法.
基本用法:
Executor exec = new DefaultExecutor();
exec.setWorkingDirectory(new File("C:\\My\\Dir\\"));
CommandLine cl = new CommandLine("mybatch.bat");
int exitvalue = exec.execute(cl);
Run Code Online (Sandbox Code Playgroud)