`

用getRuntime().exec()调用系统copy、xcopy命令

    博客分类:
  • Java
阅读更多
在java程序开发中,有用到getRuntime().exec()调用copy、xcopy命令,其中碰到一些问题,记录如下:
1.用getRuntime().exec()调用copy:
java.lang.Runtime.getRuntime().exec("cmd.exe /c copy C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc C:\\cubeETL_TEST\\cog\\publish1\\231.mdc");

以上的写法经测试是可以正确copy的。
在写程序的过程中,先碰到的是这样一种情况,写法如下:
java.lang.Runtime.getRuntime().exec("cmd.exe /c copy C:/cubeETL_TEST/cog/buildDir/231.mdc C:/cubeETL_TEST/cog/publish1/231.mdc");

与上面一种写法的差别就是文件路径中是使用“\”还是“/”,在windows 2000系统上测试的结果是,路径写成C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc,则能正确copy文件;若写成C:/cubeETL_TEST/cog/buildDir/231.mdc,程序也能运行,且不报任何错误,但是文件却没有copy成功。

2.使用getRuntime().exec()调用copy时,若直接写成:
java.lang.Runtime.getRuntime().exec("copy C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc C:\\cubeETL_TEST\\cog\\publish1\\231.mdc");

程序运行时会产生异常信息:
java.io.IOException:   CreateProcess:   copy   C:\cubeETL_TEST\cog\buildDir\231.mdc C:\cubeETL_TEST\cog\publish1\231.mdc  error=2

3.用getRuntime().exec()调用xcopy:
可以正确执行的写法如下:
java.lang.Runtime.getRuntime().exec("cmd.exe /c xcopy C:\\cubeETL_TEST\\cog\\buildDir\\231  C:\\cubeETL_TEST\\cog\\publish1\\231\\");

文件夹层次说明:buildDir下存在文件夹231,publish1下不存在文件夹231.
首先说明这么写的含义:是将buildDir下的文件夹231拷贝到文件夹publish1下。
首先要注意的是因为文件夹publish1下原没有文件夹231(若有,那就又变成相当于调用copy命令拷贝文件了),所以在写源目录、目标目录时需注意:源目录路径后面不要带“\”,而目标路径后面需要带“\”。这样文件夹231(文件及子文件夹)就能正确复制到publish1文件夹下。

如果写成这样的格式:
java.lang.Runtime.getRuntime().exec("cmd.exe /c xcopy C:\\cubeETL_TEST\\cog\\buildDir\\231  C:\\cubeETL_TEST\\cog\\publish1\\231");

在java程序中运行后,程序无错误提示,但是文件夹不能正确拷贝;直接在cmd中执行这样的命令:
xcopy C:\cubeETL_TEST\cog\buildDir\231  C:\cubeETL_TEST\cog\publish1\231
运行后后出现和下图一样的提示:


(在本机测试的目录结构,C:\temp下没有xml文件夹
输入D回车,命令将把文件夹buildDir下的子文件夹231拷贝到publish1文件夹下;

若在cmd中执行如下的命令:
xcopy C:\temp\cog\xml\  C:\temp\xml\
运行后将提示,无效路径 复制了0个文件,如下图






  • 大小: 9.3 KB
  • 大小: 6.1 KB
1
0
分享到:
评论

相关推荐

    Java使用Runtime.exec()给Windows命令提示符做了个外壳,真的很山寨!

    在Java编程中,`Runtime.exec()`方法是一个非常实用的功能,它允许我们执行操作系统级别的命令。这篇博客"Java使用Runtime.exec()给Windows命令提示符做了个外壳,真的很山寨!"探讨了如何利用`Runtime.exec()`来...

    【IDEA】windows环境下IDEA java代码Runtime.getRuntime.exec中shell的执行环境的解决方案

    windows环境下IDEA java代码Runtime.getRuntime.exec中shell的执行环境的解决方案前言解决办法后记 前言 在使用IDEA本地开发监控守护线程的后台,我遇上了执行环境不兼容的问题,爆出各种“xxx不是内部或外部命令,...

    使用runtime实现linux命令行或shell脚本多次调用

    在`ShellConsole`类中,我们使用`Runtime.getRuntime().exec("ls -l")`执行了`ls -l`命令,并通过`BufferedReader`读取并打印了命令的输出。注意,执行外部命令可能会抛出异常,因此需要妥善处理。 另一个类`Shell....

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    proc = Runtime.getRuntime().exec(command); new StreamReader(proc, proc.getInputStream(), "Output").start(); new StreamReader(proc, proc.getErrorStream(), "Error").start(); } catch (IOException ex)...

    Android中软件的静默安装

    1,申请root权限Runtime.getRuntime().exec("su"); 2,通过数据输出流DataOutputStream写入pm install命令; 3,最后获取Process进程的返回值int i = process.waitFor();,如果i=0,则表明已获取root权限。

    解决runtime.exec()执行进程block死锁以及为waitFor设置超时

    完美解决runtime.exec()执行进程block死锁以及为waitFor设置超时 不需要耗cpu的循环判断exitValue==0 开两个进程搞定

    java调用windows命令

    在Java编程中,有时我们需要在程序中调用Windows系统的命令行操作,例如执行外部程序、系统命令或者进行文件操作。Java提供了Runtime类和Process类来实现这一功能。以下是如何使用Java调用Windows命令行的详细步骤和...

    java.lang.Runtime.exec() Payload知识点详解

    在 Java 语言中,可以使用 Runtime.getRuntime().exec() 方法执行命令,该方法可以执行操作系统命令,并返回结果。例如,可以使用以下代码执行命令: `String cmd = "ls -l"; Process process = Runtime.getRuntime...

    Runtime 执行bat

    当调用`exec()`方法时,它会创建一个新的子进程。这个子进程有三个流:标准输出(`stdout`)、标准错误(`stderr`)和标准输入(`stdin`)。如果不处理这些流,它们可能会占用大量内存,导致程序阻塞。因此,我们...

    java系统命令调用

    本文将详细介绍如何使用Java Runtime类中的`getRuntime().exec()`方法来调用系统命令,并提供一些实际应用场景的例子。 ### Java Runtime.getRuntime().exec() `java.lang.Runtime`类提供了运行时系统的表示形式,...

    java javascript 调用命令行 cmd

    `Runtime.getRuntime().exec(command)` 是最基础的方法,用于执行指定的系统命令。`command`参数是一个字符串,表示要执行的命令。例如,如果你想要运行`dir`命令,可以这样写: ```java String command = "cmd /...

    Android程序中(APK程序)执行Adb shell 命令

    Process process = Runtime.getRuntime().exec("su -c adb shell command"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...

    Java调用Shell命令的方法

    总之,Java通过`Runtime.exec()`方法调用Shell命令,实现了与操作系统交互的能力。这种方式在处理系统级任务时非常有用,尤其是在需要执行复杂操作或者利用已有系统工具时。然而,也应当谨慎使用,以防止潜在的安全...

    android系统中调用shell脚本

    1. **使用Runtime类**:这是最基础的方法,通过`Runtime.getRuntime().exec()`方法执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("sh /sdcard/myscript.sh"); ``` 但是这种方法只能...

    Java调用Python的jar包

    这两个方法允许Java启动一个新的进程,并执行操作系统命令。因此,我们可以在Java中执行Python脚本,例如: ```java Process process = Runtime.getRuntime().exec("python script.py"); ``` 然而,这并不涉及jar...

    Java调用应用程序和Dos中的命令

    本文将详细介绍如何使用Java来调用应用程序以及如何在Windows操作系统中调用DOS命令。 #### 一、Java调用应用程序的基本概念 在Java中,`java.lang.Runtime`类提供了与当前运行时系统交互的方法,其中包括`exec()`...

    解决java执行cmd命令调用ffmpeg报错Concat error - No such filter '[0,0]'问题

    然而,在Java中通过`Runtime.getRuntime().exec()`或`ProcessBuilder`执行命令时,可能还会遇到问题,因为这些方法在处理命令行参数时有自己的规则。在某些情况下,即使在DOS窗口中可以成功执行的命令,通过Java执行...

    java调用本地浏览器的demo

    总结一下,Java调用本地浏览器的关键在于使用`Runtime.exec()`或`ProcessBuilder`执行操作系统级别的命令。具体命令取决于操作系统的类型,如Windows的`rundll32`,Linux的`xdg-open`,以及Mac OS的`open`。通过`...

    java工程 实现调用系统命令ping

    在Java中,我们可以使用`Runtime.getRuntime().exec()`方法或者`ProcessBuilder`类来执行系统命令。下面我们将详细介绍如何使用这两种方法实现“ping”命令。 ### 使用`Runtime.getRuntime().exec()`方法 1. **...

Global site tag (gtag.js) - Google Analytics