[JAVA基础]使用Java语言调用批处理命令的方法(Windows和Linux平台)
简介
调用工具的介绍
Java为我们提供了Runtime.GetRuntime.excu()和ProcessBuilder两个方法来开启一个子线程执行命令,我们可以在其中输入指令来实现批处理命令或者脚本的调用。
本篇也是主要介绍了使用上述方法来调用cmd、shell命令或者其脚本文件
在Windows下的调用
Windows下主要还是cmd命令和脚本文件的使用
直接使用命令
1.对于一般的简单命令,使用Runtime.getRuntime().excu(“cmd”)即可,其中的cmd就是要执行的命令
比如我要执行下面这行代码
Process p=Runtime.getRuntime().excu("cmd /c start dir")
一个列举当前目录内容的命令,就会弹出cmd框并执行该命令
需要注意到的是执行excu方法的时候会返回一个Process对象,他是一个直接继承于Object的类,可以对该进程进行输入输出流操控或者进程的关闭一类的任务。
2.对于条件比较复杂的命令,我们可能需要用到 ProcessBuilder这个类,和runtime直接执行字符串的方法不同的是,
Builder的传入参数是一个由参数和命令组成的数组,同时可以配置命令运行时的环境
比如下面这条命令
Process p=new ProcessBuilder(Arrays.asList("cmd","/c","start","dir"));
能够实现和脚本一样的效果,其优点是不用费心去拼接字符串,对于命令参数较多的语句更加友好。
调用bat脚本
调用bat脚本的过程其实也是发出一个cmd命令的过程,只不过这时候我们主要的命令都写在bat脚本里了,java程序只是起到一个调用该脚本的功能。
比如我们写这样一个脚本
@echo off
dir
再使用java去调这个脚本
Process p=Runtime.getRuntime("cmd /c start path/s.bat").start()# path为文件路径
也可以起到同样的效果。
在Linux下的调用
经过测试发现,在LInux下的命令调用和Windows下大同小异。都可以通过上述的两个方法来实现。只是在使用Linux时,没有cmd这样的批处理窗口来启动命令,而是可以直接将命令运行
直接使用命令
Process p=Runtime.getRuntime("java -jar *.jar").start()
调用sh脚本
Process p=Runtime.getRuntime("path/*.sh").start()
需要注意的是在使用sh脚本文件的时候需要为sh脚本文件添加可执行的权限
chmod +x path/*.sh