文章目录
Java 文件生成 Windows 系统 .bat 批处理文件并自动执行
1、生成 bat 脚本注意事项
2、Java 执行 Cmd 命令
3、完整代码示例
4、执行结果
Java 文件生成 Windows 系统 .bat 批处理文件并自动执行
1、生成 bat 脚本注意事项
在 Windows 中生成 bat 脚本时 , 必须输出 gb2312 编码的字符串 , 否则执行时会出现中文乱码 ;
另外还要注意 , WIndows 中的换行时 \r\n , 不要忽略这个问题 , 否则也会出错 ;
【错误记录】Windows 系统 bat 脚本报错 ( Java 生成 bat 脚本乱码处理 | 输出 GB2312 字符串 | Windows 中的换行时 \r\n )
2、Java 执行 Cmd 命令
使用 Runtime.getRuntime().exec 执行 Cmd 命令 ; 通过 BufferedReader 读取执行过程中的输出信息 ;
3、完整代码示例
import java.io.*; public class Main { public static void main(String[] args) throws Exception { File bat = new File("cmd.bat"); OutputStreamWriter osw =new OutputStreamWriter( (new FileOutputStream("cmd.bat")),"gb2312"); osw.write("echo 生成 BAT 脚本\r\n"); osw.write("echo 执行命令\r\n"); osw.close(); String ret = excuteCmdCommand("cmd.bat"); System.out.println(ret); } /** * 执行 cmd 命令 * @param cmdCommand * @return */ public static String excuteCmdCommand(String cmdCommand) { StringBuilder stringBuilder = new StringBuilder(); Process process = null; try { process = Runtime.getRuntime().exec(cmdCommand); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream(), "GBK")); String line = null; while((line=bufferedReader.readLine()) != null) { stringBuilder.append(line+"\n"); } return stringBuilder.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } }
4、执行结果
执行上述程序 , 执行结果如下 :