Используемая вами команда: cmd.exe /c cd c:\ dir /b /s
. Я не думаю, что это делает то, что вы ожидаете.
Я имею в виду, что вы объединили две команды в одну строку, и оболочке Windows, вероятно, это не нравится. Попробуйте что-то вроде
String[] str = new String[] {"cmd.exe", "/c",
"cd", "c:\\", "&&",
"dir", "/b", "/s"
};
&&
скажет оболочке выполнить cd c:\
и затем выполнить dir /b /s
, если первая команда была успешной.