【发布时间】:2012-01-05 15:25:02
【问题描述】:
我需要从一个源到多个目标复制一个目录。例如,我从我的 C: 驱动器中复制了一个文件并将其粘贴到 许多外部驱动器中,例如 E:,F:,G:...等。对于这个过程,我使用了以下代码,
set src=%~1
:Loop
shift
set dest=%~1
if "%dest%"=="" goto :EOF
xcopy "%src%" "%dest%" /E
goto Loop
我将此代码 sn-p 保存为 .bat 在 system32 文件夹中。然后我用这个命令作为
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
在这,我的错误是什么,我怎样才能得到准确的输出。尽快回复我。提前谢谢...!
【问题讨论】:
-
使用 Java 来复制文件,而不是用命令行麻烦会不会更容易? Java 7 引入的新 java.nio 类将使您使用
Files.copy()实现用例变得微不足道。此外,您的解决方案将是可移植的,而不是仅在您的 PC 上运行。 -
@pushy:我的目标是将文件从源复制到多个目标。这个概念可以从 Files.copy() 中实现吗?
-
当然,为什么不呢。首先将文件复制到第一个目标,然后复制到第二个目标,依此类推,就像在批处理文件中一样。