Реализовать в командной строке с использованием JAVA

#java #command-line #batch-file #command-line-arguments

#java #командная строка #пакетный файл #аргументы командной строки

Вопрос:

В моем проекте мне нужно разделить все.файлы java в папке и вставьте ее в отдельную папку. Я выяснил, что для этой цели работает приведенная ниже команда

 for /f "delims==" %k in ('dir C:Projectdownloads*.java /s /b') do copy "%k" C:ProjectjavaRepo
  

В приведенной выше команде исходная папка: C:Projectdownloads
Папка назначения для копирования всего .файлы Java: C:ProjectjavaRepo

Я попытался использовать следующую команду на JAVA,

 Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(.....);
  

Но я не понимаю, как поместить команду «for» в качестве аргумента для rt.exec.

Я попытался создать пакетный файл следующим образом, но это не работает.

 @echo off
for /f "delims==" %k in ('dir C:Projectdownloads*.java /s /b') do copy "%k" C:ProjectjavaRepo
  

Можете ли вы сообщить мне, верен ли мой подход, или есть какая-либо другая лучшая альтернатива?
Предложения / идеи только приветствуются.

Комментарии:

1. есть ли причина, по которой вы хотите сделать это на java?

Ответ №1:

Если вы работаете на Java, вам не нужны все эти хитрости. Просто используйте цикл for и скопируйте файлы. Вы можете вызвать copy через exec для каждого файла или вы можете скопировать, используя чистую Java, что было бы намного лучше, имхо.

Ответ №2:

Представьте себе Java «clippy» — полезную скрепку:

Похоже, вы пытаетесь организовать java-проект!

Возможно, вам следует использовать инструмент сборки, такой как ant или gradle. Они могут выполнять эти низкоуровневые задачи очень компактным и удобным способом.

Если вы должны выполнить это с 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();
    }
}
  

Теперь это работает хорошо .. 🙂

Комментарии:

1. Таким образом, вы делаете программу, независимую от платформы else, зависящей от платформы.