2015-08-28 195 views
0

我想通過Java中的Runtime類運行批處理文件。批量失敗輸出長度限制

import java.io.*; 
import java.lang.*; 

public class TestExec { 
    public static void main(String[] args) { 
     try { 

     Process proc; 
      Runtime runtime = Runtime.getRuntime(); 
      proc = runtime.exec("C:\\test.bat"); 
      Thread.sleep(5000); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     System.out.println("End of file reached: " + e.getMessage()); 
     } catch (InterruptedException e){ 
     e.printStackTrace(); 
     System.out.println("End of file reached: " + e.getMessage()); 
    } 

    System.out.println("end"); 
    } 
} 

test.bat的

echo "It is a test" 
echo "line3" 
echo "line4" 
echo "line5" 
echo "line6" 
echo "line7" 
echo "line8" 
echo "line9" 
echo "line10" 
echo "line11" 
echo "line12" 
echo "line13" 
echo "line14" 
echo "line15" 
echo "line16" 
echo "line17" 
echo "line18" 
echo "line19" 
echo "line20" 
echo "line21" 
echo "line22" 
echo "line23" 
echo "line24" 
echo "line25" 
echo "line26" 
echo "line27" 
echo "line28" 
echo "line29" 
echo "line30" 
echo "line31" 
echo "line32" 
echo "line33" 
echo "line34" 
echo "line35" 
echo "line36" 
echo "line37" 
echo "line38" 
echo "line39" 
echo "line40" 
echo "line41" 
echo "line42" 
echo "line43" 
echo "line44" 
echo "line45" 
echo "line46" 
echo "line47" 
echo "l....." 

腳本失敗,這似乎是有關於被輸出的數據量的限制。如果我在文件的開頭關閉@echo,輸出限制似乎會增加。我也測試運行與此C:\test.bat >> C:\output.txt 2>&1相同的批處理文件命令,它工作。將輸出重定向到.txt使腳本無誤地運行。有沒有人有內部爲什麼會發生這種情況?有沒有解決方法來增加可以輸出的數據量?

從控制檯運行java可執行文件。平臺是Windows 7. 謝謝。

Outout是這樣的:

C:\app\aime\gc_inst\user_projects\domains\GCDomain>echo "line3" 
"line3"C:\app\aime\gc_inst\user_projects\domains\GCDomain>echo "line4" 
"line4"C:\app\aime\gc_inst\user_projects\domains\GCDomain>echo "line5" 
"line5"C:\app\aime\gc_inst\user_projects\domains\GCDomain>echo "line6" 
"line6"C:\app\aime\gc_inst\user_projects\domains\GCDomain>echo "line7" 
"line7"C:\app\aime\gc_inst\user_projects\domains\GCDomain>echo "line8" "line8" 

它只是完成那裏。

+0

在這種環境下它不起作用嗎?從命令行?在你的ide裏面?其他? –

+0

失敗是什麼意思?你能粘貼你看到的確切的錯誤信息嗎? –

+0

我在帖子中添加了對問題的回覆。 – user1129209

回答

0

通過cmd.exe試試。

Runtime.getRuntime().exec(new String[] {"cmd.exe", "/c", "C:\\test.bat"}); 

我也通常使用ProcessBuilder

+0

問題依然存在。 – user1129209