Я попытался это:Выдача командной строки команды в Java
Process rt = Runtime.getRuntime().exec("cmd /c start C:\\Users\\spacitron\\batchfiles\\mybatch.bat");
Но все, что происходит, командная строка появляется на экране.
Я попытался это:Выдача командной строки команды в Java
Process rt = Runtime.getRuntime().exec("cmd /c start C:\\Users\\spacitron\\batchfiles\\mybatch.bat");
Но все, что происходит, командная строка появляется на экране.
Что касается вашей конкретной проблемы, я бы заподозрил, что аргументы командной строки становятся искалеченными. На самом деле это общая проблема с ошибкой Runtime#exec
.
Вместо этого я бы рекомендовал вместо этого использовать ProcessBuilder
. Это намного более прощание с параметрами командной строки и гораздо лучше работает с вещами вроде пробелов.
Для exammple ...
MyBatch.bat
@echo от
эхо это тест сообщение
RunBatchCommand
import java.io.IOException;
import java.io.InputStream;
public class RunBatchCommand {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("cmd", "start", "/c", "MyBatch.bat");
pb.redirectError();
try {
Process p = pb.start();
InputStreamConsumer isc = new InputStreamConsumer(p.getInputStream());
new Thread(isc).start();
int exitCode = p.waitFor();
System.out.println("Command exited with " + exitCode);
if (isc.getCause() == null) {
System.out.println(isc.getOutput());
} else {
isc.getCause().printStackTrace();
}
} catch (IOException | InterruptedException exp) {
exp.printStackTrace();
}
}
public static class InputStreamConsumer implements Runnable {
private InputStream is;
private StringBuilder sb;
private IOException cause;
public InputStreamConsumer(InputStream is) {
this.is = is;
sb = new StringBuilder(128);
}
@Override
public void run() {
try {
int in = -1;
while ((in = is.read()) != -1) {
sb.append((char) in);
System.out.print((char) in);
}
} catch (IOException exp) {
cause = exp;
exp.printStackTrace();
}
}
protected String getOutput() {
return sb.toString();
}
public IOException getCause() {
return cause;
}
}
}
Какой ...
This is a test message
Command exited with 0
This is a test message
Каковы ожидаемые результаты? – MadProgrammer
Я подозреваю, что ошибка связана с вашим файлом 'mybatch.bat'. Что происходит, когда вы запускаете 'mybatch.bat' в командной строке? –
Java Devil, когда я дважды нажимаю на mybatch.bat, появляется командная строка и выполняется сценарий. – spacitron