java - 在 Eclipse IDE 中无法将文件从一个驱动器复制到多个驱动器

标签 java file cmd

我需要从一个源到多个目标复制目录。例如,我从 C: 驱动器复制了一个文件,并将其粘贴到许多外部驱动器,例如 E:、F:、G:...等。对于这个过程,我使用了以下代码,

set src=%~1

:Loop
    shift
    set dest=%~1
    if "%dest%"=="" goto :EOF
    xcopy "%src%" "%dest%" /E
goto Loop

我将此代码片段保存为 system32 文件夹中的 .bat。然后我使用这个命令作为

C:\Windows\System32>mcopy C:\Users\FSSD\Desktop\Screenshot E: F:

我在命令提示符下执行了此命令,它执行成功。

然后我尝试在我的java应用程序中实现这个命令。

我的java代码是,

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class MultipleCopy{

    public static void main(String args[]) {

        String exe_Cmd = "c:/Windows/System32/mcopy C:/Users/FSSD/Desktop/Screenshot E: F:";
        Runtime r = Runtime.getRuntime();
        ProcessBuilder p = new ProcessBuilder(new String[] { "cmd.exe", "/C",
                exe_Cmd });
        Process pro;
        try {
            pro = p.start();
            InputStream is = pro.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.err.println("IO Exception" + e.getMessage());
        }

    }
}

它执行时没有任何错误,但文件不会复制。

我的 eclipse IDE 控制台的输出是:

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>set src=C:/Users/FSSD/Desktop/Screenshot 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>shift

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>set dest=E: 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>if "E:" == "" goto :EOF 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>xcopy "C:/Users/FSSD/Desktop/Screenshot" "E:" /E 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>goto Loop 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>shift

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>set dest=F: 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>if "F:" == "" goto :EOF 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>xcopy "C:/Users/FSSD/Desktop/Screenshot" "F:" /E 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>goto Loop 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>shift

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>set dest= 

C:\Users\FSSD\IndigoWorkSpace\Multi_Copy>if "" == "" goto :EOF 

在这里,我的错误是什么,我怎样才能得到准确的输出。尽快回复我。提前致谢...!

最佳答案

ProcessBuilder 的参数不能包含空格,而是

String exe_Cmd = "c:/Windows/System32/mcopy C:/Users/FSSD/Desktop/Screenshot E: F:";

你需要

String[] pars = {"cmd.exe", "/C","c:/Windows/System32/mcopy","C:/Users/FSSD/Desktop/Screenshot","E:","F:"};
Runtime r = Runtime.getRuntime();
ProcessBuilder p = new ProcessBuilder(pars);

但我仍然宁愿使用 Java 解决方案,就像我在评论中建议的那样;-)

关于java - 在 Eclipse IDE 中无法将文件从一个驱动器复制到多个驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257391/

相关文章:

.net - 通过CMD运行 SandcaSTLe 帮助文件生成器时,$(SolutionDir)MSBuild属性不正确

批处理文件中的 PHPUnit 设置

java - 如何获取android :name from <application>

java - 指定服务器地址给客户端程序

java - 无法通过类型转换为类型

c# - 如何使用C#向文件中插入字符

java - 如何在java中前后重命名文件

java - 根据日期从MySQL数据库中获取数据

javascript - 将磁盘空间存储在文件中

java - 创建一个发送到后台并关闭的 bat 文件(1 个文件)