Отображение сообщения об ошибке DOS с использованием Rhino/JavaScript/Java

Я пытаюсь запустить команду DIR с помощью программы, похожей на язык Rhino (программа использует Java/JavaScript).

Если есть какая-либо синтаксическая ошибка или любая другая ошибка, я хочу распечатать сообщение об ошибке, используя функцию ниже:

function CatchDOSError()
{

var ErrorMSG = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("cmd /c dir \\C:\Test\Data /s /b /a-D > c:\Test\fileRunDIR.txt").getErrorStream()));

while (( ErrorMSG.readLine()) != null) 
 {
println(ErrorMSG);
}
ErrorMSG.close();

}

Если я запускаю эту функцию, все, что я получаю в качестве вывода в консоли, это: "java.io.BufferedReader@71fbs019".

Если я запускаю команду DOS из CMD вручную, появляется сообщение об ошибке "Система не может найти путь". Это сообщение об ошибке, которое я хочу, чтобы оно отображалось с помощью функции выше. Не уверен, есть ли проблемы с конверсией или что-то не так с моей функцией.

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

1 ответ

Решение

Когда вы делаете

while (( ErrorMSG.readLine()) != null) {
  println(ErrorMSG);
}

Вы отбрасываете строку после проверки, что она не равна нулю, и затем печатаете сам Reader (который не переопределяет toString() а не линия). Я думаю, что вы хотели,

var line = "";
while (( line = ErrorMSG.readLine()) != null) {
  println(line);
}
Другие вопросы по тегам