자바 프로그램 호출 bat

3359 단어
글 의 출처:http://www.cnblogs.com/xwdreamer/archive/2011/12/12/2296911.html
1. 참고 문헌
1. JAVA 가 WIN 에서 수행 하 는. BAT 파일 에 관 한 문 제 를 물 어보 세 요. ->6 층 대답
2. cmd 를 호출 하여 bat 파일 을 실행 한 후 자동 으로 종료 하 는 방법 ->11 층 대답
3. 자바 호출 bat
앞의 블 로그 에는 my sql 데이터베이스 백업 과 복구 라 고 적 혀 있 습 니 다. 이것 은 주로 bat 파일 을 수 동 으로 호출 하여 실 행 됩 니 다. 그러면 프로그램 에서 bat 파일 을 어떻게 호출 합 니까?이것 이 바로 이 블 로그 가 말 해 야 할 주제 이다.
2. 실례 1:
 
import java.io.IOException;

public class InvokeBat4 {
    public void runbat(String batName) {
        String cmd = "cmd /c start F:\\database_backup\
gx_backup\\"+ batName + ".bat";// pass try { Process ps = Runtime.getRuntime().exec(cmd); ps.waitFor(); } catch (IOException ioe) { ioe.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("child thread donn"); } public static void main(String[] args) { InvokeBat4 test1 = new InvokeBat4(); test1.runbat("backup_ngx"); System.out.println("main thread"); } }

2.1. 단점:
cmd 상자 가 팝 업 되 며 자동 으로 닫 을 수 없습니다.
2.2. 해결 방법:
bat 파일 마지막 에 추가
exit
예 를 들 어 원래 의 bat 파일 내용 은 다음 과 같다.
mysqldump -uroot -proot --database ngx_ad ngx_authority ngx_jbpm ngx_mes ngx_model > F:\database_backup
gx_backup
gx_db.sql

우 리 는 그것 을
mysqldump -uroot -proot --database ngx_ad ngx_authority ngx_jbpm ngx_mes ngx_model > F:\database_backup
gx_backup
gx_db.sql exit

2.3. 자동 으로 탈퇴 할 수 있 지만 존재 하 는 문제점
자동 으로 종료 할 수 있 더 라 도 이 bat 를 호출 할 때마다 화면 이 cmd 명령 상 자 를 반 짝 입 니 다.
3. 인 스 턴 스 개선, bat 직접 실행
import java.io.IOException;
import java.io.InputStream;

public class InvokeBat2 {
    public void runbat(String batName) {
        try {
            Process ps = Runtime.getRuntime().exec(batName);
            InputStream in = ps.getInputStream();
            int c;
            while ((c = in.read()) != -1) {
                System.out.print(c);//          ,       
            }
            in.close();
            ps.waitFor();

        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("child thread done");
    }

    public static void main(String[] args) {
        InvokeBat2 test1 = new InvokeBat2();
        String batName = "F:\\database_backup\
gx_backup\\backup_ngx.bat"; test1.runbat(batName); System.out.println("main thread"); } }

 
 다음 글: Extjs + JSON 인 스 턴 스http://www.cnblogs.com/xwdreamer/archive/2011/12/11/2296912.html
알고리즘 면접 문제 요약http://www.cnblogs.com/xwdreamer/archive/2011/12/13/2296910.html
 
 
 
 

좋은 웹페이지 즐겨찾기