Batch file 批处理文件自动输入fortran程序

Batch file 批处理文件自动输入fortran程序,batch-file,cmd,fortran,Batch File,Cmd,Fortran,我有一个简单的编译Fortran程序,如下所示: program main integer :: i1,i2,i3 print *,"Enter input 1" read *, i1 print *,"Enter input 1" read *, i2 print *,"Enter input 1" read *, i3 print *, "you have entered", i1, i2, i3 end progra

我有一个简单的编译Fortran程序,如下所示:

program main
    integer :: i1,i2,i3

    print *,"Enter input 1"
    read  *, i1
    print *,"Enter input 1"
    read  *, i2
    print *,"Enter input 1"
    read  *, i3

    print *, "you have entered", i1, i2, i3
end program main
我想写一个批处理文件,它将自动输入三个值,然后保持屏幕以进行输出,同时也让用户有机会输入其他命令。这是我目前在批处理文件中得到的结果:

D:
cd D:\TEMP\TEST\TEST\Debug
(echo 1 
echo 2 
echo 3) | test
pause>nul
不幸的是,这产生了以下结果:

这与我想要的很接近,但有一些问题:

  • echo命令被输出到屏幕上,这是我不希望发生的
  • 批处理文件运行结束后按任意键将退出命令窗口。我想为用户提供不断输入命令的机会

请让我知道什么是这个简单问题的干净解决方案

如果Fortran程序将从stdin读取,为什么不创建一个带有输入值的临时文件并将其重定向到Fortran程序中

CD /D D:\TEMP\TEST\TEST\Debug
SET "TEMP_FILE=%TEMP%\fortran_program_%RANDOM%.tmp"
IF EXIST "%TEMP_FILE%" (DEL "%TEMP_FILE%")
ECHO>>"%TEMP_FILE%" 1
ECHO>>"%TEMP_FILE%" 2
ECHO>>"%TEMP_FILE%" 3
test <"%TEMP_FILE%"
IF EXIST "%TEMP_FILE%" (DEL "%TEMP_FILE%")
pause>nul
CD/D:\TEMP\TEST\TEST\Debug
设置“TEMP\u文件=%TEMP%\fortran\u程序%RANDOM%.tmp”
如果存在“%TEMP\u FILE%”(删除“%TEMP\u FILE%”)
ECHO>>%TEMP\u文件%“1
ECHO>>%TEMP_文件%“2
ECHO>>%TEMP_文件%“3
测试编号

@echo off
放在脚本的第一行中,或者在每个命令前面加上
@
,对于括号内的块(
@(…)
)…true。这解决了第一个问题。另外两个呢?对不起,是的,我刚刚听到了。我从问题列表中删除了它,我刚刚输入了3次“输入1”。我的错。问题3仍然存在(用户继续输入命令的机会)实际问题与fortran无关,似乎您希望将一些VAL传输到stdin,然后切换到控制台输入。我猜解决方案将是如此的混乱,您最好让代码读取前三个VAL作为命令行参数。您可以将
CHOICE/N/C RQ/M“Press R(Repeat)或Q(Quit)”与
IF errorlevel 2(goto:eof)结合使用否则转到:重复
放置
:在
(回显1
行)之前的某个位置重复
标签。阅读
如果/?
转到/?
选择/?
,了解更多信息。