2016-11-27 12 views
-1

Я пишу программу java, которая должна выполнять команды оболочки, поэтому я написал функцию, которая будет выполнять команду для выполнения в виде строки (то есть: «mkdir ~/Folder1») и выполнить эту команду с помощью оболочка. Вот функция:java Выполнение команд оболочки

private static void shell(String cmd) 
{ 
    try 
    { 
    Runtime run = Runtime.getRuntime(); 
    Process pr = run.exec(cmd); 
    pr.waitFor(); 
    BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
    String line = ""; 

    while ((line = buf.readLine()) != null) { 
    System.err.println(line); // show any errors returned by the command executed on the error console 

    } 

    } catch (Exception ee) {} 

}

по какой-то странной причине эта функция не выполняет никаких команд. Я сделал это неправильно? Кажется, что просто выполнить команды оболочки, но она не работает.

+2

В блоке 'catch' сделайте следующее:' ee.printStackTrace(); 'И опубликуйте ошибки – rafid059

+1

Что я видел, это парень с 10 репутацией и 1 золотая и 1 серебряная медаль ...: P – Jay

+0

почему это имеет значение? – brothman

ответ

1

Я думаю, что вы передаете командную строку как некоторую команду mkdir, например, «mkdir C: \ some \ folder \ path».

mkdir не является двоичным в пути Windows, это параметр командной строки. Используйте командную строку как «cmd.exe/c mkdir C: \ some \ folder \ path»

Тогда это должно работать нормально.

+0

Я использую mac (так что терминал на основе unix), и я знаком с использованием команды mkdir непосредственно в терминале. Я не думаю, что строка, которую вы поставили, сделает что угодно. Я использую другой код, и он не работает: (о, я не могу опубликовать его, весело) – brothman

Смежные вопросы