在我的项目中,我需要隔离文件夹中的所有.java文件并将其粘贴到单独的文件夹中。我发现下面提到的命令可以用于此目的
for /f "delims==" %k in ('dir C:\Project\downloads\*.java /s /b') do copy "%k" C:\Project\javaRepo
在上面的命令中,源文件夹:C:\ Project \ downloads \
要复制所有.java文件的目标文件夹:C:\ Project \ javaRepo
我尝试在JAVA中使用以下命令,
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(.....);
但我不清楚如何将“for”命令作为rt.exec的参数。
我尝试按如下方式创建批处理文件,但它不起作用。
@echo off
for /f "delims==" %k in ('dir C:\Project\downloads\*.java /s /b') do copy "%k" C:\Project\javaRepo
如果我的方法是正确的,还是有其他更好的选择,你能告诉我吗? 建议/想法是最受欢迎的。
答案 0 :(得分:1)
如果您使用Java,则不需要所有这些技巧。只需用于循环和复制文件。你可以打电话 通过exec复制每个文件,或者你可以使用纯Java复制,这将是更好的imho。
答案 1 :(得分:1)
想象一下Java“clippy”有用的回形针:
看起来你正在尝试组织一个java项目!
也许你应该使用像ant或gradle这样的构建工具。这些可以非常紧凑和方便的方式完成那些低级别的任务。
如果必须从Java中执行此操作,您甚至可以使用ant作为可以为您执行这些操作的库。
或者,如果您愿意重新组织项目并遵循约定,maven也可能是更自动的解决方案。
答案 2 :(得分:0)
谢谢你们提出新的建议..我也调查了它们。 但是,我稍后可以实现相同的命令行代码...我的代码如下
public class copyJava {
public static void main(String args[]) throws IOException,
InterruptedException {
Process p = null;
String[] command = {
"cmd",
"/c",
"for /f \"delims==\" %k in ('dir C:\\Project\\workspace\\downloads\\*.java /s /b') do copy \"%k\" C:\\Project\\workspace\\javaRepo" };
ProcessBuilder copyFiles = new ProcessBuilder(command);
copyFiles.redirectErrorStream(true);
p = copyFiles.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line;
do {
line = reader.readLine();
if (line != null) {
System.out.println(line);
}
} while (line != null);
reader.close();
p.waitFor();
}
}
现在效果很好.. :)