Java를 사용하여 명령 프롬프트 명령 실행
다음 코드를 사용하여 Java를 통해 명령 프롬프트에서 명령 실행을 시도합니다.
String command = "cmd /c start cmd.exe"; Process child = Runtime.getRuntime().exec(command); OutputStream out = child.getOutputStream(); out.write("cd C:/ /r/n".getBytes()); out.flush(); out.write("dir /r/n".getBytes()); out.close();
지정된 실행 없이 명령 프롬프트를 열어두면 원하는 결과가 나오지 않을 수 있습니다.
이 문제를 해결하려면 다음 접근 방식을 고려하세요.
String[] command = {"cmd"}; Process p = Runtime.getRuntime().exec(command); new Thread(new SyncPipe(p.getErrorStream(), System.err)).start(); new Thread(new SyncPipe(p.getInputStream(), System.out)).start(); PrintWriter stdin = new PrintWriter(p.getOutputStream()); stdin.println("dir c:\ /A /Q"); stdin.close(); int returnCode = p.waitFor(); System.out.println("Return code = " + returnCode);
또한 데이터 전송을 용이하게 하기 위해 SyncPipe 클래스를 정의합니다.
class SyncPipe implements Runnable { public SyncPipe(InputStream istrm, OutputStream ostrm) { istrm_ = istrm; ostrm_ = ostrm; } public void run() { try { final byte[] buffer = new byte[1024]; for (int length = 0; (length = istrm_.read(buffer)) != -1; ) { ostrm_.write(buffer, 0, length); } } catch (Exception e) { e.printStackTrace(); } } private final OutputStream ostrm_; private final InputStream istrm_; }
이 방법은 다음을 허용합니다. 여러 명령을 문자열로 묶어 단일 Windows 프로세스 내에서 실행할 수 있는 기능입니다. 또한 실시간 피드백 및 오류 처리 메커니즘을 제공합니다.
위 내용은 Java를 사용하여 여러 명령 프롬프트 명령을 안정적으로 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!