私はユーザ名と年齢として入力を受け取り、両方の入力をプリントするバッチスクリプトを持っています。私はそのスクリプトを実行し、入力を渡すjavaプログラムを書いています。Java Process Builderを使用して複数の入力を受け取るバッチスクリプトを実行するには?
私はProcessBuilderを使用してJavaプログラムを作成しました。私はまた、プロセスのOutputStreamでユーザー名と年齢を渡していますが、ユーザー名だけが印刷され、年齢が表示されません。
私のスクリプト(TEST.BATファイル):
@echo off
echo executing test.bat
set /p name=Enter Name:
set /p age=Enter Age :
echo Hi %name%, you are %age% years old.
私のJavaプログラム:
private static void executeInteractiveCommand(String cmd,String ... args){
try{
List<String> command = new ArrayList<String>();
command.add(cmd);
ProcessBuilder builder = new ProcessBuilder(command);
Map<String, String> environ = builder.environment();
final Process process = builder.start();
OutputStream out = process.getOutputStream();
out.write("tester \n\r".getBytes());
out.flush();
out.write("25\n".getBytes());
out.flush();
out.close();
int errCode = process.waitFor();
System.out.println("Process Error Code : "+errCode);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
//out.close();
is.close();
System.out.println("Program terminated!");
}catch(IOException ex){
ex.printStackTrace();
} catch(InterruptedException ex){
ex.printStackTrace();
}
}
が出力されます: のjavaにTestScript プロセスエラーコード:年齢を入力してください:0 TEST.BAT 名を入力し実行こんにちはテスターを、あなたは歳です。 プログラムが終了しました。 –