Я пытаюсь запустить командный файл из программы Java. Например: у меня есть пакет «abc.bat» в папке «Program Files».Как получить доступ к пути к файлу с пробелами из командной строки в Java
Я хочу выполнить эту партию из моей программы Java. Я использую класс CommandLine, Commons-exec jar.
CommandLine cmdLine = CommandLine.parse("cmd");
cmdLine.addArgument("/c start \"\" \"C:\\Program Files\\abc.bat\"");
DefaultExecutor exec = new DefaultExecutor();
Process p = Runtime.getRuntime().exec(cmdLine.toString());
exec.execute(cmdLine);
Приведенный выше код выдает ошибку о том, «Windows не могу найти файл. Убедитесь, что вы ввели имя правильно, и повторите попытку». И это из-за пробелов на пути.
Итак, я попробовал ответ, указанный здесь @ brso05, и это работает. Но я хочу, чтобы он был в будущем классе. Пожалуйста, найдите мой код ниже и помогите мне исправить это.
final CommandLine cmdLine = CommandLine.parse("cmd.exe");
cmdLine.addArgument("/c");
cmdLine.addArgument("start");
cmdLine.addArgument("\""+ batchFileExecute.getParent().toString() + "\"");
ExecutorService es = Executors.newFixedThreadPool(1);
Future<?> future = es.submit(new Runnable() {
public void run() {
DefaultExecutor exec = new DefaultExecutor();
try {
Process p = Runtime.getRuntime().exec(cmdLine.toString());
exec.execute(cmdLine);
System.out.println(p.waitFor());
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
});
String thread_status = null;
try
{
thread_status = future.get().toString();
System.out.println(thread_status+" completed the execution");
}
catch (NullPointerException e)
{
System.out.println("The execution of the received project is complete.");
// In here I want to do some processing again.
}
Код, упомянутый мной, работает, но он не работает, если в моем командном файле есть пробелы в пути. Можете ли вы помочь мне исправить это?
Исследуйте фрагмент, который вы дали, но затем я не могу положить его в Будущее. Он не работает должным образом.
Заранее благодарен!
Должен работать, вы уверены, что файл есть? – brso05
да .. Я пробовал .. и его не работает .. Я пытаюсь запустить пакет через командную строку с Java. – user1395264
Попробуйте мой ответ. Думаю, это сработает для вас ... – brso05