2010-07-08 3 views
0

Я был в состоянии открыть командную строку из моей программы Java с помощью следующего кода:открытия CMD подскажет и выполнить команду Java

String cmd = "C:\\WINNT\\system32\\cmd.exe /c start"; 


    try { 
     @SuppressWarnings("unused") 
     Process ps = Runtime.getRuntime().exec(cmd); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Приведенных выше кода открывает командную строку.

Если я хочу выполнить некоторую команду в этой открытой командной строке, что мне делать?

Любая помощь приветствуется.

+1

Вы не должны использовать одну форму строка 'Exec()', вы всегда должны использовать форму 'EXEC (String [] cmdarray) 'или вы в конце концов будете удивлены, когда exec« таинственным образом »потерпит неудачу. .exec() - это * не * синтаксический анализатор команд, а цитирование/экранирование вещей (например, пробелы в именах файлов) не работает. 'String [] cmd = {" C: \\ WINNT \\ system32 \\ cmd.exe ","/c "," start "};' –

ответ

0

Я знаю, что cmd /k [some other command] будет использовать эту команду в командной строке, но она работает только один, так что это ограниченное решение

+0

Я не понял. Вы имеете в виду, что открытое приглашение cmd бесполезно после его открытия. Должен ли я попытаться напрямую выполнить команду без ее открытия? – user234194

+0

Если вы хотите, чтобы программа выполняла одну команду в командной строке, вы используете 'cmd/k'. Если вы хотите использовать командную строку в качестве пользователя, вы должны просто щелкнуть по ней и ввести команды как обычно. – murgatroid99

1

Я думаю, что вы находитесь в правильном направлении. Для того, чтобы выполнить некоторые команды или более чем одну команду, повторите cmd /k [command], как это: -

// write dir output to file 
Runtime.getRuntime().exec(new String[] { 
     "cmd", 
     "/k", 
     "dir", 
     ">", 
     "c:\\output.txt" 
}); 

// create test-dir folder in c:\ 
Runtime.getRuntime().exec(new String[] { 
     "cmd", 
     "/k", 
     "mkdir", 
     "c:\\test-dir" 
}); 
+0

Спасибо limc, но я хочу, чтобы остальные команды выполнялись в открытой консоли. Это возможно .. что, если мы будем использовать ProcessBuilder – user234194

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