Как использовать переменные CMD через Java? - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу использовать переменные в CMD через среду выполнения Java.Я попробовал следующее:

Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("cmd /c start cmd.exe /K \"ping localhost &&" +
                                                   "set /p userInput=Do you want to exit? [y/n] &&" +
                                                   "echo %userInput%\"");
        } catch (IOException ex) {
        }

Но вместо указания значения переменной userInput он отображает имя переменной в том виде, как оно есть с символом % с обеих сторон:

Pinging Desktop-PC [::1] with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time=1ms
Reply from ::1: time=1ms

Ping statistics for ::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms
Do you want to exit? [y/n] y
%userInput%

тогда как, если я запускаю ту же команду из CMD, она дает мне значение переменной

D:\>set /p userInput=Do you want to exit? [y/n]
Do you want to exit? [y/n] y

D:\>echo %userInput%
y

1 Ответ

0 голосов
/ 07 февраля 2019

Вам потребуется задержка расширение , которое включено в cmd с параметром /V.Поэтому вы должны использовать:

Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("cmd /c start cmd.exe /V /k \"ping localhost &&" +
                                                   "set /p userInput=Do you want to exit? [y/n] &&" +
                                                   "echo !userInput!\"");
        } catch (IOException ex) {
        }

, который должен работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...