#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, зависящей от платформы.