Как перенаправить вывод cmd второго пакетного экземпляра в Java - PullRequest
0 голосов
/ 21 октября 2019

В Java я хочу вызвать командный файл, который требует прав администратора, и распечатать вывод на консоль. Мне удалось перенаправить вывод одного пакетного файла. Но чтобы запустить командный файл с правами администратора, мне пришлось поместить следующие строки в командный файл:

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

Из-за этого, во-первых, при запуске командного файла с кодом сверху, во-первых, это начинает новый экземпляр себя. Вот почему я думаю, что перенаправление cmd не работает должным образом, потому что есть два экземпляра пакета (и мне нужен вывод из второго экземпляра).

Это код, который я использую дляперенаправить вывод консоли, но он работает только для одного экземпляра пакета:

String cmd = "C:\\Users\\uidq9340\\Desktop\\sdf\\test.bat";
Runtime r = Runtime.getRuntime();
Process pr = r.exec(cmd);

BufferedReader stdInput = new BufferedReader(new InputStreamReader( 
pr.getInputStream() ));
String s ;
while ((s = stdInput.readLine()) != null) {
    logger.appendLogText(s + "\n");
System.out.println(s);
}

pr.waitFor();

Я искал похожие вопросы, но пока ничего не нашел. Если кто-нибудь может дать мне небольшую помощь для перенаправления вывода cmd второго экземпляра, я был бы очень признателен!

...