开发环境Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | 换行 | Runtime 执行 Cmd 命令 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发环境Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | 换行 | Runtime 执行 Cmd 命令 )相关的知识,希望对你有一定的参考价值。
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、执行结果
执行上述程序 , 执行结果如下 :
以上是关于开发环境Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | 换行 | Runtime 执行 Cmd 命令 )的主要内容,如果未能解决你的问题,请参考以下文章