У меня проблемы с отправкой списка команд из Java в CMD. Моя цель - программно обновить скрипт планирования Crontab с Java.
. Я чувствую, что проблема возникает из-за ";" Символ после "-l" в отправляемой строке действует как разделитель команд в CMD. Я попытался использовать как строку напрямую, так и используя построитель процессов (с различными комбинациями, даже путем разделения команды для каждого пробела):
String cmd = "(crontab -l; echo '9 * * * * sudo python /home/pi/Desktop/led.py') | sort - | crontab -";
Process p = Runtime.getRuntime().exec(cmd);
String commandArray[] = {"(crontab", "-l,", "\"echo '9 * * * * sudo python /home/pi/Desktop/led.py\")", "|", "sort", "-", "|", "crontab", "-"}
Process p = new ProcessBuilder (commandArray).redirectErrorStream(true).start();
В обоих случаях я получаю следующее:
java.io.IOException: Cannot run program "(crontab": error=2, No such file or directory
Однако при запуске команды, хранящейся в String cmd непосредственно в терминале, она работает нормально. Есть ли способ заставить консоль обрабатывать входную строку времени выполнения как список команд через подоболочку, например ЗДЕСЬ ? Спасибо.