当我在cmd中使用此命令运行jar文件时。
java -jar Reporter.jar p=Reporter.properties Sales.generateToken
它要求输入userName和密码(隐藏字段),然后要求Y / N
我想在控制台中自动回答这些问题。
我使用不同的技术创建了一个批处理文件,但没有一个工作 例如,我使用|编写了userName和密码和&其次我添加/ Q来强制执行它,而不是要求userName / Password和conformation。
没有一种技术可行。
我的bat文件看起来像这样
java -jar Reporter.jar p=Reporter.properties Sales.generateToken
& userName123
& Password123
& y
pause
,然后
我意识到用bat文件直接做到这一点是不可能的。 所以我创建了一个由bat文件构建和执行的小型java程序 像这样。
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
我得到了
答案 0 :(得分:0)
放入档案param.txt
:
yuserName123
yPassword123
y
三行,最后还有换行符。
java -jar Reporter.jar p=Reporter.properties Sales.generateToken <param.txt
现在,批处理文件将文件作为System.in传递。
答案 1 :(得分:0)
而不是像下面的运行时流程那样调用Reporter.jar
Process proc = Runtime.getRuntime().exec("java -jar Reporter.jar p=Reporter.properties Sales.generateToken");
我建议直接在项目中添加Reporter.jar
(就像我们在C#中为DLL文件做的那样),然后从Jar调用相关函数。
Reporter Repo=new Reporter()
Repo.UserOrPasswordMEtho("Usrname","Password","Y");