【问题标题】:Implement in command line using JAVA使用JAVA在命令行中实现
【发布时间】:2012-02-08 21:44:59
【问题描述】:

在我的项目中,我需要将所有 .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

您能否告诉我我的方法是否正确,或者还有其他更好的选择吗? 欢迎提出建议/想法。

【问题讨论】:

  • 你为什么要在java中这样做?

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


【解决方案1】:

如果您使用 Java,则不需要所有这些技巧。只需使用 for 循环并复制文件。你可以打电话 通过 exec 复制每个文件,或者您可以使用纯 Java 进行复制,恕我直言。

【讨论】:

    【解决方案2】:

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

    您似乎正在尝试组织一个 java 项目!

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

    如果您必须从 Java 中执行此操作,您甚至可以使用 ant,例如,作为可以为您执行此类操作的库。

    或者,如果您愿意重新组织您的项目并遵循约定,maven 也可能是一个更自动化的解决方案。

    【讨论】:

      【解决方案3】:

      谢谢你们的新建议。我也研究了它们。 但是,我稍后可以实现相同的命令行代码......我的代码如下

      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();
          }
      }
      

      现在效果很好.. :)

      【讨论】:

      • 这样你就可以让一个独立于平台的程序依赖于平台。
      猜你喜欢
      • 2010-11-25
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多