Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java向批处理发送userinp_Java_Batch File_Console - Fatal编程技术网

从Java向批处理发送userinp

从Java向批处理发送userinp,java,batch-file,console,Java,Batch File,Console,我有batch.cmd,我正在java中运行它 process=Runtime.getRuntime().exec(“batch.cmd”) 我不知道怎样才能进入(1-6) 我试过: Console=System.Console(); 但控制台是空的 或 OutputStream OutputStream=process.getOutputStream(); pos.write(49)//1. 什么事也没发生 有人能帮忙吗 -----batch.cmd----- echo start :star

我有batch.cmd,我正在java中运行它

process=Runtime.getRuntime().exec(“batch.cmd”)

我不知道怎样才能进入(1-6)

我试过: Console=System.Console(); 但控制台是空的

OutputStream OutputStream=process.getOutputStream(); pos.write(49)//1. 什么事也没发生

有人能帮忙吗

-----batch.cmd-----
echo start
:start
cls
set /p userinp=choose a number(1-6):
set userinp=%userinp:~0,1%
if "%userinp%"=="1" goto 1
if "%userinp%"=="2" goto 2
if "%userinp%"=="3" goto 3
if "%userinp%"=="4" goto 4
if "%userinp%"=="5" goto 5
if "%userinp%"=="6" goto 6
echo invalid choice
goto start
:1
echo 1
goto end
:2
echo 2
goto end
:3
echo 3
goto end
:end
pause>nul

尝试刷新输出流。

尝试:

BufferedWriter out 
    = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
out.write(option + "\n" );
out.close();

如果您可以完全访问cmd文件的源代码,那么最明显的解决方案是不使用
SET/p
,而是将选项作为参数直接传递给批处理文件

将batch.cmd更改为

echo start
set inp=%1
if "%inp%"=="1" goto 1
if "%inp%"=="2" goto 2
echo invalid parameter
goto :eof
:1
echo 1
goto :eof
:2
echo 2
goto :eof
并使用一个选择的参数调用它