2013-03-08 2 views
0

ПочемуProcessBuilder и CMD

ProcessBuilder pb = new ProcessBuilder("cmd","/C","dir"); 

работы, но

ProcessBuilder pb = new ProcessBuilder("cmd","dir"); 

нет.
Я имею в виду, что в последнем случае cmd запускается, но список каталогов не происходит. Почему это?

+0

Что не работает? Ошибка? Который? – 2013-03-08 09:38:00

ответ

4

Это нормальное поведение cmd.exe - то же самое происходит в командной строке:

C:\>cmd dir 
Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 
C:\>cmd /c dir 
Volume in drive C is System 
Volume Serial Number is ABCD-EF10 
... 

С первого звонка, вы создаете новый (интерактивный) процесс интерпретатора команд, cmd.exe , При втором вызове, вы создаете новый процесс командного интерпретатора и сказать ему, чтобы выполнить данную команду, а затем выйти:

/C  Carries out the command specified by string and then terminates 
2

Потому что cmd.exe работает как это. Попробуйте это в окне командной строки:

cmd dir 

и

cmd /C dir 

также посмотреть на help cmd для объяснения.

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