1. 请教关于JAVA在WIN下执行.BAT文件的问题 ->6楼的回答
2.请问如何在调用cmd运行完bat文件后自动退出 ->11楼的回答
在前面的博客中写道了mysql的数据库备份与恢复,这个主要是通过手动调用bat文件来执行的,那么如何在程序中调用bat文件呢。这就是这篇博客需要讲的主题。
2.实例1:
import java.io.IOException;
public class InvokeBat4 {
public void runbat(String batName) {
String cmd = "cmd /c start F:\\database_backup\\ngx_backup\\"+ batName + ".bat";// pass
try {
Process ps = Runtime.getRuntime().exec(cmd);
ps.waitFor();
} catch (IOException ioe) {
ioe.printStackTrace();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("child thread donn");
}
public static void main(String[] args) {
InvokeBat4 test1 = new InvokeBat4();
test1.runbat("backup_ngx");
System.out.println("main thread");
}
}
2.1.缺点:
会弹出cmd框,并且不能自动关闭
2.2.解决方法:
在bat文件最后加上
exit
比如原来的bat文件内容如下:
mysqldump -uroot -proot --database ngx_ad ngx_authority ngx_jbpm ngx_mes ngx_model > F:\database_backup\ngx_backup\ngx_db.sql
我们将其修改为
mysqldump -uroot -proot --database ngx_ad ngx_authority ngx_jbpm ngx_mes ngx_model > F:\database_backup\ngx_backup\ngx_db.sql
exit
2.3.能够自动退出但依然存在的问题
即使能够自动退出,但是每次调用这个bat的时候屏幕总是会闪一下cmd命令框。
3.改进实例,直接执行bat
import java.io.IOException;
import java.io.InputStream;
public class InvokeBat2 {
public void runbat(String batName) {
try {
Process ps = Runtime.getRuntime().exec(batName);
InputStream in = ps.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print(c);// 如果你不需要看输出,这行可以注销掉
}
in.close();
ps.waitFor();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("child thread done");
}
public static void main(String[] args) {
InvokeBat2 test1 = new InvokeBat2();
String batName = "F:\\database_backup\\ngx_backup\\backup_ngx.bat";
test1.runbat(batName);
System.out.println("main thread");
}
}
1。 bat文件
import java.io.IOException;
import java.io.InputStream;
public class callbat {
public static void main(String args[]){
callCmd("C:/run.bat");
}
public static void callCmd(String locationCmd){
try {
Process child = Runtime.getRuntime().exec("cmd.exe /C start "+locationCmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.shell文件
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class callshell {
public static void main(String args[]) throws IOException{
Runtime rt=Runtime.getRuntime();
String command="/export/home/xlg/solarischk.sh";
Process pcs=rt.exec(command);
PrintWriter outWriter=new PrintWriter(new File("/export/home/zjg/show.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
String line=new String();
while((line = br.readLine()) != null)
{
System.out.println(line);
outWriter.write(line);
}
try{
pcs.waitFor();
}
catch(InterruptedException e){
System.err.println("processes was interrupted");
}
br.close();
outWriter.flush();
outWriter.close();
int ret=pcs.exitValue();
System.out.println(ret);
System.out.println("执行完毕!");
}
}
- * 运行shell
- *
- * @param shStr
- * 需要执行的shell
- * @return
- * @throws IOException
- */
- public static List runShell(String shStr) throws Exception {
- List<String> strList = new ArrayList();
- Process process;
- process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",shStr},null,null);
- InputStreamReader ir = new InputStreamReader(process
- .getInputStream());
- LineNumberReader input = new LineNumberReader(ir);
- String line;
- process.waitFor();
- while ((line = input.readLine()) != null){
- strList.add(line);
- }
- return strList;
- }
注:如果sh中含有awk,一定要按new String[]{"/bin/sh","-c",shStr}写,才可以获得流
相关推荐
shell,bat脚本运行java程序, shell,bat脚本运行java程序,
java运行dos命令 java执行Shell java执行bat
java执行shell或bat脚本,Java可以使用三种方式来执行.bat或.shell脚本文件:使用Runtime.exec()、使用ProcessBuilder、使用第三方工具包commonsexec.jar
java的一个工具类,自动判断当前系统,若是window启动bat脚本,若是linux启动linux脚本,执行结果后台打印
NULL 博文链接:https://sky-xin.iteye.com/blog/2289726
使用批处理脚本或者shell循环加载jar包到classpath然后执行java命令
运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。
本程序运行在JAVA下,需要安装JAVA虚拟机后才能使用。功能:运行start.bat启动脚本,将自动读取默认(d:/needFolder)下的所有文件夹,并根据每个文件的创建时间创建相应日期的文件夹,然后将相应文件移动到相应文件夹...
java程序崩溃自启脚本 具体操作如下: 下载下来将test.sh 放在和项目同级目录 然后在liunx中加入定时器指现test.sh就可以了( 执行crontab -e 在后面加入 * */1 * * * sh /xxx/xxx/xxx/test.sh; 定时时间(例子 一...
程序测试可用,直接解压导入到工程就可以,bat文件跟shell文件是用于在window跟linux上直接执行的脚本 我把开发的配置文档附上: 1.程序为定时任务,任务执行时间在bin目录下的配置文件mergeFilleUtil.properties中...
Weblogic任意命令执行的检测工具。 WebLogic_CVE-2017-3248文件夹的执行命令: java -jar weblogic_cmd.jar -C whoami -H 10.1.1.104 -P...java -jar Weblogic-Unserialization-GetShll-CMD.jar 或者双击starter.bat.
createKeyStore.bat 使用Java SDK keytool实用程序创建私钥存储和公共信任(证书)存储。 作为Git存储库的一部分,它有一个预先构建的版本,但是您可以使用它来重新构建,以编辑文件以进行滚动。 key
用Java编写的实用程序控制台,可轻松运行和下载控制台模块 #特征 在Windows上运行(可以修改/计划用于多平台) 对* NIX系统的小支持 管理类似于NPM或RubyGems的Java应用程序模块 通用,可以配置为运行使用批处理...
pyETRC项目的最初灵感来源和很多功能设置都来自由LGuo等前辈基于java语言开发的ETRC列车运行图系统。为致敬开发ETRC项目的前辈,本项目定名为pyETRC列车运行图系统,简称为pyETRC。 交互支持 本系统支持读取和导出...
\bin—— 内包含windows平台启动批处理文件run.bat或linux平台启动shell脚本run.sh \config—— 基本配置文件 \lib—— 服务器运行jar包 \logs—— 日志文件 \temp—— 临时文件 \www——web apps 目录文件 \README....
另外一些需要编译的语言,则提供了编译用的 shell 文件(Linux/Unix 下使用)和 bat 文件(Windows 下使用),或者直接提供编译好的二进制库文件。 不过为了让读者能够更清楚如何安装,我们还是对每种语言的安装都...
该外壳是Kotlin REPL的可扩展实现,具有一系列功能,包括: 语法高亮类型推断命令使用Maven坐标在运行时下载依赖项列出声明的符号历史该项目是将以前的Sparklin Shell迁移到新的Kotlin脚本和REPL基础结构,并转换为...
Square的Java和Android项目的IntelliJ IDEA代码样式设置。 安装 在Unix上,运行install.sh脚本。 Windows用户应改用install.bat 。 如果IntelliJ正在运行,请重新启动。 打开IntelliJ项目设置->代码样式,将项目的...
对于可执行引擎,它只需获取脚本并使用Java ProcessBuilder将其作为单个命令运行。 装订 脚本绑定使用其表示形式作为环境变量导出,并且可以在外壳程序中进行访问。 对于可执行引擎,绑定也将在命令行(即脚本)中...
shell/bat 脚本的完整发行版。 当前版本是stampo 1.2.1 安装 在 PATH 中添加 bin 目录。 或者,如果您移动 shell/bat 脚本,请相应地调整 lib/stampo.jar 的路径。 用 在您的 stampo 项目中,用于处理站点: stampo ...