Runtime类调用Windows系统cmd命令
例如:
public class ShowDate {
public static void main(String[] args) {
Runtime run=Runtime.getRuntime();
try {
run.exec("cmd /k start d:\\date.bat");
} catch (Exception e) {
e.printStackTrace();
}
}
}
date.bat文件内容:date
补充:
Runtime类:是一个与JVM运行时环境有关的类,这个类是Singleton的。
1、Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。
2、Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法。
3、Runtime中的exit方法是退出当前JVM的方法,估计也是唯一的一个吧,因为我看到System类中的exit实际上也是通过调用Runtime.exit()来退出JVM的,这里说明一下Java对Runtime返回值的一般规则(后边也提到了),0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。
例如: Process pro = run.exec("javac");
int exitVal = pro.exitValue() ;
System.out.println("退出的值:"+exitVal);
报错:process has not exited
原因:因为exitValue这个方法是不阻塞的,程序在调用这个方法时外部命令并没有返回所以造成了异常的出现,这里是由另外的方法来等待外部命令执行完毕的,就是waitFor方法。因为当你在一个Process上调用waitFor方法时,当前线程是阻塞的,如果外部命令无法执行结束,那么你的线程就会一直阻塞下去,这种意外会影响我们程序的执行。
例如: int exitVal = pro.waitFor() ;
System.out.println("退出的值:"+exitVal);
效果:程序也无法执行完成,它没有输出但却一直悬在那里。
原因:因为本地的系统对标准输入和输出所提供的缓冲池有效,所以错误的对标准输出快速的写入和从标准输入快速的读入都有可能造成子进程的锁,甚至死锁。
例如: InputStream stderr = pro.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("");
int exitVal = pro.waitFor();
System.out.println("Process exitValue: " + exitVal);
结果:有结果。为了处理好外部命令大量输出的情况,你要确保你的程序处理好外部命令所需要的输入或者输出。
Sun的doc里其实说明还有其他的用法:
exec(String[] cmdarray, String[] envp, File dir)
Executes the specified command and arguments in a separate process with the specified environment and working directory.
那个dir就是调用的程序的工作目录,这句其实还是很有用的。
Windows下调用程序
Process proc =Runtime.getRuntime().exec("exefile");
Linux下调用程序就要改成下面的格式
Process proc =Runtime.getRuntime().exec("./exefile");
Windows下调用系统命令
String [] cmd={"cmd","/C","copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
Linux下调用系统命令就要改成下面的格式
String [] cmd={"/bin/sh","-c","ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
Windows下调用系统命令并弹出命令行窗口
String [] cmd={"cmd","/C","start copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
Linux下调用系统命令并弹出终端窗口就要改成下面的格式
String [] cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
还有要设置调用程序的工作目录就要
Process proc =Runtime.getRuntime().exec("exeflie",null, new File("workpath"));
当然最好的执行系统命令的方法就是写个bat文件或是shell脚本。然后调用,那样修改和实现就简点多了。
分享到:
相关推荐
当调用CMD命令时,要特别小心,避免命令注入攻击。永远不要从不可信的来源接收命令字符串。如果需要动态构建命令,确保对输入进行充分的验证和过滤。 总结,通过Java调用Windows CMD命令,我们可以方便地执行系统级...
在Java编程中,有时我们需要在程序中调用Windows系统的命令行操作,例如执行外部程序、系统命令或者进行文件操作。Java提供了Runtime类和Process类来实现这一功能。以下是如何使用Java调用Windows命令行的详细步骤和...
在IT领域,有时候我们需要在Java或JavaScript代码中执行操作系统级别的命令,例如运行系统脚本、管理文件、控制进程等。...同时,了解不同操作系统下的命令差异也很重要,因为Linux和Windows的命令可能会有所不同。
1. 使用`Runtime.exec()`调用CMD命令: ```java try { Process process = Runtime.getRuntime().exec("cmd /c dir"); // "dir" 是一个示例CMD命令 int exitCode = process.waitFor(); // 等待命令执行完成并获取...
`nircmd.exe`是一个强大的命令行工具,由NirSoft公司开发,它提供了一系列实用的命令,可以帮助我们执行一些Windows系统的操作。在管理员权限场景下,我们可以利用它的`elevate`命令来提升程序的执行权限。在Java...
### Java中如何调用CMD命令 在Java编程中,经常需要与操作系统进行交互,比如执行系统命令、调用外部程序等。本文将详细介绍如何利用Java的`Runtime.getRuntime().exec()`方法来实现对CMD命令的调用,并通过具体的...
Java提供了Runtime类和ProcessBuilder类来实现这样的功能,允许我们调用系统命令。下面将详细解释如何使用Java调用CMD来创建目录和复制文件。 首先,我们需要了解CMD中的命令。在Windows CMD中,我们可以使用`mkdir...
Java运行Windows的CMD命令主要涉及Java的Runtime类和ProcessBuilder类,它们允许程序在操作系统环境中执行外部命令。这里,我们重点讨论如何通过Java代码来调用Windows系统的命令行(CMD)执行各种操作。 首先,`...
这篇博客"Java使用Runtime.exec()给Windows命令提示符做了个外壳,真的很山寨!"探讨了如何利用`Runtime.exec()`来创建一个简单的命令行界面,尽管这种方式可能并不完美,但不失为一种学习和实践的方法。 `Runtime....
CMD(Command Prompt)是Windows系统内置的命令行解释器,通过CMD,用户可以直接输入命令来执行各种任务,而批处理就是将这些命令写入到一个文本文件中,然后通过运行这个文本文件来批量执行这些命令,极大地提高了...
Java调用DOS命令是指在Java程序中执行操作系统级别的命令,比如Windows下的CMD命令或Linux下的Shell命令。这种功能在很多场景下都很有用,比如自动化脚本、文件操作、系统管理等。Java提供了Runtime类和...
1. **Runtime类**:这是Java中最基础的系统运行时接口,它提供了执行操作系统命令的方法。`Runtime.getRuntime().exec(String command)`是主要的执行命令的方法。这个方法接受一个字符串参数,该参数应该包含完整的...
在Windows系统中,Java程序可以通过调用cmd命令行或者执行exe程序来与操作系统进行交互,这在开发中经常被用来处理一些需要系统级操作的任务。下面是详细的步骤和知识点: ### Java调用cmd命令 1. **使用Runtime类...
首先,Java中可以通过`Runtime`或`ProcessBuilder`类来执行外部命令,包括运行Windows批处理脚本(.bat)和VBS脚本(.vbs)。`Runtime.exec()`方法允许我们在Java程序中执行操作系统级别的命令,而`ProcessBuilder`...
在Java中,我们可以使用Runtime类或ProcessBuilder类来执行操作系统级别的命令。这两种方法都能实现与操作系统的交互,但各自有其特点。 1. 使用Runtime类: ```java Runtime runtime = Runtime.getRuntime(); ...
- `cmd /c start` 命令用于在Windows系统中启动一个新进程来打开文件。 **注意事项**: - 文件路径必须准确无误。 - 确认文件格式是否支持自动播放。 - 考虑到跨平台的问题,如果目标应用是在不同平台上使用,则...
在IT领域,特别是软件开发与系统管理中,C#作为一种广泛使用的高级编程语言,提供了丰富的功能来处理各种任务,包括调用外部程序或操作系统命令。本文将深入探讨如何使用C#来调用DOS(Disk Operating System)命令,...
在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如调用Windows的批处理文件(.bat或.cmd文件)。批处理文件是一种文本文件,包含了命令行指令序列,用于自动化执行一系列操作。本篇文章...
需要注意的是,实际的`runCmdCommand`方法应当根据操作系统(如Windows、Linux等)来正确执行命令,比如在Windows下可以使用`Runtime.getRuntime().exec(command)`。 标签 "软件/插件" 提到了可能与软件工具或插件...