sitelink1 https://stackoverrun.com/ko/q/11418710 
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

TFS의 witadmin.exe 프로그램을 사용하여 WIT 파일을 import 해야 할 일이 있었다

이를 위해서는 프로그램 수행시 몇가지 파라미터를 입력해야만 하는데 해당 작업을 자동으로 수행할 자바 프로그램을 작성해보았다

 

 

import java.io.*;
public class CmdExec {
  public static void main(String argv[]) {
      
    try {

      //Process p = Runtime.getRuntime().exec("D:\\w.bat"); //배치로 만들어서 실행시

 

      String[] command = new String[] {
          "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\witadmin.exe"
      , "importwitd"
      , "/collection:http://도메인:포트번호/tfs/컬렉션명"
      , "/p:프로젝트명"
      , "/f:\"D:\\RequestProduct.xml\""};
      
      Process p = Runtime.getRuntime().exec(command); //명령 실행


      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line = null;
      while ((line = br.readLine()) != null) {
          System.out.println(line); //실행 결과 출력
      }
      
      //p.waitFor(); <- subprocess까지 종료할때까지 기다리다가 hang이 걸리는 경우가 있었다 그래서 아래와 같이 timeout을 걸어준다

      if (!p.waitFor(3, TimeUnit.SECONDS)) {

          System.out.println("Destroy");

          p.destroy();

      }

    } catch (Exception err) {
      err.printStackTrace();
    }
  }
}

 

잘 동작한다 ^^;

 

참고로 콘솔 명령어 사이의 공백은 command 배열 변수에 저장시 콤마로 구분해야 한다

예를 들어, "witadmin.exe importwitd" 명령어를 command 배열 변수에 담는다면

  String[] command = {"witadmin.exe", "importwitd"};

이런식이어야 한다

 

String[] command = {"witadmin.exe importwitd"}; 식으로 코딩해서 실행하면 아무런 동작을 하지 않는다

오류 출력도 없어서 뭐가 문제인지 혼란스러울 수 있으므로 제일 먼저 명령어 공백을 처리했는지 확인해야 한다

번호 제목 글쓴이 날짜 조회 수
251 Calendar, Date, Format, java.time 패키지 황제낙엽 2017.10.31 108
250 날짜, 시간 문자열 값으로 Date 오브젝트로 만들기 >> SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US) 황제낙엽 2017.10.31 1516
249 시스템 속성(System Property) 클래스를 이용하여 jni 라이브러리 사용하기 황제낙엽 2017.09.22 37
248 Java 실행 옵션들 황제낙엽 2017.08.23 3367
247 HttpsURLConnection 을 사용한 SSL서버 접속 file 황제낙엽 2017.08.02 231
246 서버구동시 주기적으로 동작을 수행하는 스레드를 함께 실행하는 서블릿 황제낙엽 2017.08.02 131
245 HttpURLConnection 사용 샘플( JSP , SERVLET ) 황제낙엽 2017.08.01 254
244 HttpURLConnection 사용하기 황제낙엽 2017.08.01 393
243 [HttpURLConnection] POST로 파라미터 넘기기 황제낙엽 2017.08.01 507
242 HttpURLConnection POST 방식 사용하기 황제낙엽 2017.08.01 370
» Runtime 클래스를 이용한 윈도우 프로그램 실행 예제 황제낙엽 2017.08.01 113
240 JSON Util (JSON 을 다루기 위해 직접 작성한 유틸 클래스) file 황제낙엽 2017.07.10 461
239 자바 리플렉션(Java Reflection) 간단한 설명 및 사용방법 정리 file 황제낙엽 2017.07.10 135
238 Generate random numbers (Random.java) 황제낙엽 2017.07.02 490
237 쓰레드(Thread)를 중간에 종료시키는 방법 황제낙엽 2017.03.15 5127
236 JSON 라이브러리(API) 종류 황제낙엽 2017.01.18 404
235 [JSON기초04] 자바 JSON 데이터에서 KEY 값 알아오기 (TIP) 황제낙엽 2017.01.18 6641
234 [JSON기초03] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 파싱 황제낙엽 2017.01.18 566
233 [JSON기초02] 자바 JSON Google Simple JSON을 이용한 간단한 JSON DATA 생성 황제낙엽 2017.01.18 111
232 [JSON기초01] JSON이란? XML이란? JSON 개념, XML 개념 설명 황제낙엽 2017.01.18 408