2017-09-19 38 views
1

当我在cmd中使用此命令运行jar文件时。使用.bat文件打开jar文件后跳过或自动回答问题

java -jar Reporter.jar p=Reporter.properties Sales.generateToken 

它要求用户名和密码(隐藏字段),然后Y/N

问我要自动应答控制台这些问题。

我创建了一个批处理文件,使用不同的技术,但没有一次成功 forexample我写userName和使用密码|和&其次我添加/ Q来执行它,而不是要求用户名/密码和构象。

的技术没有工作。

我的bat文件看起来像这样

java -jar Reporter.jar p=Reporter.properties Sales.generateToken 
& userName123 
& Password123 
& y 

pause 

然后

我意识到这是不可能直接与bat文件来做到这一点。 所以我创建了一个小的Java程序,它是由bat文件 这样构建和执行的。

javac program.java 
java program 
pause 

问题: 我想编写一个程序,自动写username “的ABC”,然后密码 “123”,然后 “Y”;

目前我的计划是这样的。

import java.io.InputStream; 
import java.lang.Runtime; 
import java.lang.Process; 

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

try{ 
Process proc = Runtime.getRuntime().exec("java -jar Reporter.jar p=Reporter.properties Sales.generateToken"); 
    proc.waitFor(); 
    InputStream in = proc.getInputStream(); 

    byte b[]=new byte[in.available()]; 
    in.read(b,0,b.length); 
    System.out.println(new String(b)); 

}catch(Exception ex) 
{ 
    System.out.println(ex); 
} 
    } 
} 

我对如何继续使用输出流感到困惑。请帮助

编辑

在bat文件使用此

echo username.dk pas01% y& java -jar Reporter.jar p=Reporter.properties Sales.generateToken 
pause 
pause 
pause 

我得到 enter image description here

+0

而是尝试像'echo user password y | Java的罐子为reporter.jar P = Reporter.properties Sales.generateToken' – npocmaka

+0

这样写这一点,但 回声 “TUSER” “abc01%” | Java的罐子为reporter.jar P = Reporter.properties Sales.generateToken 暂停 但CMD飞溅和disapears @ npocmaka – Charlie

+0

即使没有引号 – Charlie

回答

0

放到一个文件param.txt

yuserName123 
yPassword123 
y 

三人行,也持续有一个换行符。

java -jar Reporter.jar p=Reporter.properties Sales.generateToken <param.txt 

现在批处理文件将文件传递为System.in。

+0

我运行该批处理文件后,它在param.txt中写入了空格 – Charlie

+0

'type param.txt | java -jar Reporter.jar p = Reporter.properties Sales.generateToken'应该这样做 –

+0

它是一样的;而不是用txt文件中的null替换文本,它显示为空 – Charlie

0

而不是通过运行过程调用Reporter.jar像下面

Process proc = Runtime.getRuntime().exec("java -jar Reporter.jar p=Reporter.properties Sales.generateToken"); 

我会建议直接添加Reporter.jar在您的项目(如我们在C#中的DLL文件来完成),然后调用从罐相关的功能。

Reporter Repo=new Reporter() 
Repo.UserOrPasswordMEtho("Usrname","Password","Y");