강좌 & 팁
글 수 2,412
2012.04.28 21:01:13 (*.52.177.29)
42953
Java에서 외부 명령어 실행하기 샘플입니다.
외부 명령어 실행후 결과를 표준출력 합니다.
Java5부터는 ProcessBuilder라는게 생겼습니다.
ProcessBuilder와 Scanner라는걸 사용해서 외부프로그램 결과를 입력받아
출력합니다.
import java.io.IOException; import java.util.Scanner; /** * @author falbb * */ public class ProcessBuilderExample { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // 실행 커맨드 String[] cmd = { "cmd", "/c", "tasklist", "/?" }; Process process = null; try { // 프로세스빌더 실행 process = new ProcessBuilder(cmd).start(); // 스캐너클래스를 사용해 InputStream을 스캔함 Scanner s = new Scanner(process.getInputStream()); while (s.hasNextLine() == true) { // 표준출력으로 출력 System.out.println(s.nextLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
[실행결과]
TASKLIST [/S 시스템 [/U 사용자 이름 [/P [암호]]]] [/M [모듈] | /SVC | /V] [/FI 필터] [/FO 형식] [/NH] 설명: 이 도구는 로컬 또는 원격 시스템에서 현재 실행되고 있는 프로세스 목록을 표시합니다. 매개 변수 목록: /S 시스템 연결할 원격 시스템을 지정합니다. /U [도메인\]사용자 명령을 실행해야 하는 사용자 컨텍스트를 지정합니다. /P [암호] 해당 사용자 컨텍스트의 암호를 지정합니다. 생략한 경우에는 물어봅니다. /M [모듈] 해당 exe/dll 이름을 사용하는 모든 작업을 나열합니다. 모듈 이름을 지정하지 않으면 로드된 모든 작업을 나열합니다. /SVC 각 프로세스에 호스트된 서비스를 표시합니다. /V 자세한 작업 정보를 표시합니다. /FI 필터 필터에서 지정한 조건과 일치하는 작업 집합을 표시합니다. /FO 형식 출력 형식을 지정합니다. 사용할 수 있는 값: "TABLE", "LIST", "CSV". /NH 출력에 표시하지 않을 "열 머리글"을 지정합니다. "TABLE"과 "CSV" 형식에서만 사용할 수 있습니다. /? 이 도움말 메시지를 표시합니다. 필터: 필터 이름 유효한 연산자 유효한 값 ----------- --------------- -------------------------- STATUS eq, ne RUNNING | NOT RESPONDING | UNKNOWN IMAGENAME eq, ne 이미지 이름 PID eq, ne, gt, lt, ge, le PID 값 SESSION eq, ne, gt, lt, ge, le 세션 번호 SESSIONNAME eq, ne 세션 이름 CPUTIME eq, ne, gt, lt, ge, le CPU 시간 (hh:mm:ss 형식) hh - 시간, mm - 분, ss - 초 MEMUSAGE eq, ne, gt, lt, ge, le 메모리 사용(KB) USERNAME eq, ne 사용자 이름([domain\]user 형식) SERVICES eq, ne 서비스 이름 WINDOWTITLE eq, ne 창 제목 MODULES eq, ne DLL 이름 참고: 원격 컴퓨터를 쿼리할 때 "WINDOWTITLE" 및 "STATUS" 필터는 지원되지 않습니다. 예: TASKLIST TASKLIST /M TASKLIST /V /FO CSV TASKLIST /SVC /FO LIST TASKLIST /M wbem* TASKLIST /S 시스템 /FO LIST TASKLIST /S 시스템 /U domain\username /FO CSV /NH TASKLIST /S 시스템 /U 사용자 이름 /P 암호 /FO TABLE /NH TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
자주 사용하는것이 아니지만 가끔 필요할때가 있어서 여기에다 올려봅니다.
감사합니다.