Кто-нибудь может помочь мне понять, как создать каталог cd, такой как:
cd C:\Program Files\Flowella
затем запускать другие команды в этом каталоге?
Переведено автоматически
Ответ 1
Один из способов запустить процесс из другого каталога в рабочий каталог вашей Java-программы - это изменить каталог, а затем запустить процесс в той же командной строке. Вы можете сделать это, заставив cmd.exe запустить командную строку, такую как cd some_directory && some_program.
Следующий пример изменяется на другой каталог и выполняется dir оттуда. По общему признанию, я мог бы просто dir этот каталог без необходимости cd обращаться к нему, но это только пример:
Обратите также внимание, что я использую ProcessBuilder для запуска команды. Среди прочего, это позволяет мне перенаправить стандартную ошибку процесса в его стандартный вывод, вызвав redirectErrorStream(true). Это дает мне только один поток для чтения.
Это дает мне следующий результат на моем компьютере:
C:\Users\Luke\StackOverflow>java CmdTest Volume in drive C is Windows7 Volume Serial Number is D8F0-C934
Directory of C:\Program Files\Microsoft SQL Server
Важно, чтобы вы разделили команду и все аргументы на отдельные строки массива string (в противном случае они не будут предоставлены корректно ProcessBuilder API).
Ответ 4
Вот более полная реализация выполнения командной строки.
Использование
executeCommand("ls");
Вывод:
12/27/201711:18:11:732: ls 12/27/201711:18:11:820: build.gradle 12/27/201711:18:11:820: gradle 12/27/201711:18:11:820: gradlew 12/27/201711:18:11:820: gradlew.bat 12/27/201711:18:11:820: out 12/27/201711:18:11:820: settings.gradle 12/27/201711:18:11:820: src