2017-05-23 1 views
0

파일에서 로그를 인쇄하려면 다음 코드를 사용했지만 "System.out.println"문을 인쇄 할 수 없습니다. 배치 파일 코드에 존재합니다.일괄 파일 캡처 명령 프롬프트 로그를 실행하고 해당 로그의 백업을 Java를 사용하여 파일에 저장하십시오.

Runtime runtime = Runtime.getRuntime(); 
    Process p1 = runtime.exec("C:\\Users\\mf11131\\Desktop\\Batch\\SimpleBatch.bat"); 
    java.io.InputStream is = (java.io.InputStream) p1.getInputStream(); 
    File logfile = new File("C:\\logs\\Logfile.txt"); 
    FileOutputStream fop = new FileOutputStream(logfile); 
    int i = 0; 
    while((i = is.read()) != -1) 
    { 
     fop.write((char)i); 
    } 

다음은 배치 파일의 간단한 코드입니다.

class abc 
{ 
    public static void main(String args[]) 
    { 
    int count=0; 
    for(int i=0;i<10;i++) 
    { 
     System.out.println("hi hello"+count); 
    } 
    } 
} 

나는 명령 프롬프트 로그 아래와 같은 출력을 필요로 enter image description here

내 전류 출력은 enter image description here

+2

배치 파일 코드를 게시하고 정확히 원하는 출력이 로그 파일에 있는지 확인하십시오. – XtremeBaumer

+0

그런 'BAT' 파일과 같이 작동하지 않을 것이라고 생각합니다. – Antoniossss

+0

"SimpleBatch.bat"파일의 내용은 무엇입니까? SimpleBatch.java를 제공했습니다. –

답변

0

당신이

같은 스트림 리디렉션을 사용해야 파일로 출력을 모두 얻고 싶다면
byBatFile.bat > logFile. 

이렇게하면 모든 출력이 logFile에 저장됩니다.

나는 일괄 처리 스크립트 내에서 호출 된 응용 프로그램의 stdio 스트림을 얻을 수 있는지에 대해 의문의 여지가 있습니다. IO는 당신이 사용하고자하는 방식대로 분리되어 있다고 생각합니다.

한편, 배치 스크립트는 모든 명령에서 새 프로세스를 "생성"합니다. 나는 배치 파일을 만드는 동안 자바 클래스 디렉토리에 디렉토리를 가리키는의 실수를 다 같이 내가 이것에 대한 해결책을 찾았이

call javac abc.java 
call java abc 
+0

하지만 프롬프트에 명령을 수동으로 입력하면 안됩니다. 따라서 특정 배치 파일 실행시 로컬 시스템의 해당 로그를 자동으로 백업해야합니다. – Kamal

+0

그리고 어디에서 수동으로 입력해야하는지 기록 했습니까? 그냥'call'을 박쥐 파일에 넣으세요. – Antoniossss

0

처럼 call에 산란 새의 insteed 이러한 프로세스를 시도 할 수 있습니다. 따라서 Java (System.out.println) 명령문 만 인쇄하지 않습니다.

관련 문제