В 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 второго экземпляра, я был бы очень признателен!