![](/img/trans.png)
[英]Unable to close the command prompt after executing a batch file using java
[英]On executing batch file capture command prompt logs and save a backup of those logs in file using Java
要打印日志文件,我使用了以下代码,但无法打印批处理文件代码中存在的“ System.out.println”语句。
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);
}
}
}
如果要将所有输出都放入文件中,则应使用像这样的流重定向
byBatFile.bat > logFile.
这将导致所有输出都存储到logFile
。
我怀疑是否有可能在批处理脚本中获取被调用应用程序的stdio流。 我认为IO是按照您希望使用的方式分离的。
另一方面,您的批处理脚本会在每个命令上“产生”新进程。 您可以尝试call
这些过程为生成新的过程,例如这样
call javac abc.java
call java abc
我找到了解决方案,因为在创建批处理文件时将目录指向Java类目录时犯了一个错误。 因此,仅Java(System.out.println)语句不打印。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.