如果要在java程序里执行一条linux可以用下面的写法
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。
现在提供一种新的执行命令方法:
File wd = new File("/bin");
System.out.println(wd);
Process proc = null;
try {
proc = runtime.getruntime().exec("/bin/bash", null, wd);
}
catch (IOException e) {
e.printStackTrace();
}
if (proc != null) {
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
out.println("cd ..");
out.println("pwd");
out.println("exit");
try {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
proc.waitFor();
in.close();
out.close();
proc.destroy();
}
catch (Exception e) {
e.printStackTrace();
}
}
这种写法相当于把整个bash环境拿进来了,out.println只要输入你需要执行的命令就行。
看上去很复杂,其实很实用,只要能在命令行执行的命令,都可以拿来试试。
分享到:
相关推荐
Process process = Runtime.getRuntime().exec(command); // 处理子进程的输入、输出和错误流,以避免阻塞 } catch (IOException e) { e.printStackTrace(); } ``` 这里的`"cmd.exe"`是Windows系统的命令解释...
1,申请root权限Runtime.getRuntime().exec("su"); 2,通过数据输出流DataOutputStream写入pm install命令; 3,最后获取Process进程的返回值int i = process.waitFor();,如果i=0,则表明已获取root权限。
windows环境下IDEA java代码Runtime.getRuntime.exec中shell的执行环境的解决方案前言解决办法后记 前言 在使用IDEA本地开发监控守护线程的后台,我遇上了执行环境不兼容的问题,爆出各种“xxx不是内部或外部命令,...
Process process = Runtime.getRuntime().exec(cmd);` 避免使用空格的解决方案 为了避免使用空格的问题,可以使用以下解决方案: * 使用 Base64 编码将命令参数编码。 * 使用重定向和管道字符来避免空格问题。 *...
例如,`Runtime.getRuntime().exec("cmd /c " + command)`会执行一个CMD命令。 3. **输入输出流管理**:你需要连接到进程的输入流(`Process.getOutputStream()`)来发送命令,以及错误和标准输出流(`Process....
Process process = Runtime.getRuntime().exec("cmd.exe /c dir"); ``` - 为了确保程序在不同版本的Windows上运行,可能需要根据操作系统平台选择使用`cmd.exe`还是`command.com`。 3. **打开关联应用程序的文件...
如果需要强制结束,只需添加`/F`参数,如`Runtime.getRuntime().exec("taskkill /F /im Notepad.exe")`。 然而,使用Jacob库操作Office进程可能存在效率低下和服务器稳定性问题。微软官方建议不要在服务器端自动...
runtime.exec("cmd /c start " + url); } catch (IOException e) { e.printStackTrace(); } } /** * 鍦ㄥ欢杩熸寚瀹氱殑绉掓暟鍚庡叧鏈? * * @param sec * 鍏虫満寤惰繜锛屽崟浣嶏細绉? */ ...
这里的代码使用 Runtime.getRuntime().exec() 方法来执行 exp 命令,将 Oracle 数据库数据导出到文件 d:\t.dmp 中。 类似地,使用以下代码可以将数据从文件中导入到 Oracle 数据库中: ```java public boolean imp...
//Process p = Runtime.getRuntime().exec("su"); //然后,在向这个进程的写入要执行的命令,即可达到以root权限执行命令: //dos.flush(); //或者用下面的方式: //Runtime.getRuntime().exec&#...
String[] cmd = {"cmd.exe", "/C", "wmic process get name"}; try { Process process = Runtime.getRuntime().exec(cmd); // 读取并打印命令输出 new Thread(new StreamDrainer(process.getInputStream()))....
Process process = Runtime.getRuntime().exec("cmd /c dir .\\"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...
Process process = Runtime.getRuntime().exec(cmd); ``` 在上述代码中,`ls -l`是一个常见的Linux命令,用于列出目录下的文件和目录信息。`Runtime.exec()`返回一个`Process`对象,可以用来获取命令的输出、错误...
然而,在Java中通过`Runtime.getRuntime().exec()`或`ProcessBuilder`执行命令时,可能还会遇到问题,因为这些方法在处理命令行参数时有自己的规则。在某些情况下,即使在DOS窗口中可以成功执行的命令,通过Java执行...
Process process = Runtime.getRuntime().exec("cmd.exe /c dir"); ``` 这里的`/c`参数表示执行完命令后立即关闭命令提示符窗口。 #### 二、处理命令输出 执行命令后,我们通常需要处理命令的输出结果。这可以通过...
Process process = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/C", "my_dir.bat"}); ``` 在Windows平台上,通常还需要指定`cmd.exe /C`作为前缀,以确保批处理文件能够被正确解析和执行。 #### 示例3:...
本文将详细介绍如何利用Java的`Runtime.getRuntime().exec()`方法来实现对CMD命令的调用,并通过具体的例子来帮助读者理解和掌握这一技术。 #### 1. 基本原理 `java.lang.Runtime`类提供了运行时环境的表示,通过...
`Runtime.getRuntime().exec(command)` 是最基础的方法,用于执行指定的系统命令。`command`参数是一个字符串,表示要执行的命令。例如,如果你想要运行`dir`命令,可以这样写: ```java String command = "cmd /...
java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令。 cmd /c dir 是执行完dir命令后关闭命令窗口。 cmd /k dir 是执行完dir命令后不关闭命令窗口。 cmd /c start dir 会打开一个新...