2015-08-28 65 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