使用JAVA在命令行中实现

时间:2011-05-27 03:03:46

标签: java command-line batch-file command-line-arguments

在我的项目中,我需要隔离文件夹中的所有.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

如果我的方法是正确的,还是有其他更好的选择,你能告诉我吗? 建议/想法是最受欢迎的。

3 个答案:

答案 0 :(得分:1)

如果您使用Java,则不需要所有这些技巧。只需用于循环和复制文件。你可以打电话 通过exec复制每个文件,或者你可以使用纯Java复制,这将是更好的imho。

答案 1 :(得分:1)

想象一下Java“clippy”有用的回形针:

  

看起来你正在尝试组织一个java项目!

也许你应该使用像antgradle这样的构建工具。这些可以非常紧凑和方便的方式完成那些低级别的任务。

如果必须从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();
    }
}

现在效果很好.. :)