추가 명령으로 cmd.exe를 호출하고 java를 사용하여 생성 된 출력을 수집하는 프로그램은 거의 작성하지 않았습니다. 다음은 샘플 프로그램입니다.인수없이 java에서 cmd.exe 호출
public class LoadShell {
public static void main(String[] args) throws Exception {
//Line1
String [] command ={"cmd.exe","/c","dir"};
ProcessBuilder probuilder = new ProcessBuilder(command);
Process process = probuilder.start();
InputStream inputstream1 = process.getInputStream();
InputStreamReader inputstreamreader1 = new InputStreamReader(inputstream1);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader1);
String line="";
while ((line = bufferedreader.readLine()) != null) {
System.out.println(line);
}
}
}
이 프로그램은 예상대로 작동합니다. 이제는 더 간단한 요구 사항이 있습니다. 나는 인수없이 cmd.exe를 호출하고 출력을 String으로 수집하려고합니다. 일부 프로젝트 특정 목적을 위해 프로세스 개체 참조 및 문자열을 다른 메서드로 보내려고하기 때문입니다. 그래서
public class LoadShell {
public static void main(String[] args) throws Exception {
//Line1
String [] command ={"cmd.exe"};
ProcessBuilder probuilder = new ProcessBuilder(command);
Process process = probuilder.start();
InputStream inputstream1 = process.getInputStream();
InputStreamReader inputstreamreader1 = new InputStreamReader(inputstream1);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader1);
int intch;
String line="";
while ((line = bufferedreader.readLine()) != null) {
System.out.println(line);
}
}
}
below--하지만이 경우처럼 1 호선에서 내 코드를 수정 한의 readLine
방법은 printing--
마이크로 소프트 윈도우 [버전 6.1.7601] 저작권 (C) 후 무기한 중단 2009 Microsoft Corporation. 판권 소유.
while ((intch = bufferedreader.read()) != -1) {
int ch = (char) intch;
System.out.println(ch);
}
을하지만도에 해당하는 바이트를 읽은 후 걸려 읽기 - -
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
이 하나가되어 다음과 같이
그래서 내가 대신 readline
의 BufferedReader
의 읽기 사용 시도 방법은 내 프로그램이 멈추지 않고 아래에 완전한 출력을 얻을 수 있습니다 -
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\devshankhasharm>
어떤 아이디어라도 감사하겠습니다.
cmd.exe로만 호출하면 명령 창이 열리지 않습니다. 콘솔에서 부분 출력 만 제공하고 무기한 중단됩니다. – user496934
예, 실제로 프로그램을 실행하여 볼 수 있습니다. – user496934