我有一个编译好的fortran 90代码" NewSourceID.exe"在文件夹E:\ TROUBLESHOOT中。这在同一文件夹中使用输入文件MAIN.IN。我在同一文件夹E:\ TROUBLESHOOT中使用批处理脚本run_sa.BAT来运行此可执行文件。此批处理脚本在运行时由另一个VB代码生成(这是一项要求,不能废除),批处理脚本如下所示。
" E:\ TROUBLESHOOT \ NewSourceID.exe" " E:\ TROUBLESHOOT \ MAIN.IN"
有两种情况 1.当我转到文件夹E:\ TROUBLESHOOT并双击批处理脚本run_sa.BAT时,NewSourceID.exe正常运行,没有任何问题。它在命令提示符窗口上运行,显示路径C:\ WINDOWS \ system32 \ command.exe。
" C:\ Documents and Settings \ epsuser \ My Documents>" E:\ TROUBLESHOOT \ NewSourceID.exe" " E:\ TROUBLESHOOT \ MAIN.IN" forrtl:severe(29):找不到文件,单元31,文件C:\ Documents and Settings \ eps user \ My Documents \ MAIN.IN
代码尝试在路径C:\ Documents and Settings \ epsuser \ My Documents \ MAIN.IN上找到输入文件MAIN.IN,这不是查找文件的正确路径。 当我用修改后的NewSourceID.exe替换NewSourceID.exe时发生了这种情况。之前的代码用于甚至从具有以下路径的VB正确运行。 C:\ WINDOWS \ system32 \ command.exe -E:\ TROUBLESHOOT \ run_sa.BAT。怎么办呢?
答案 0 :(得分:0)
您确定,Fortran程序NewSourceID会读取您传递给它的命令行参数吗?特别是较旧的Fortran程序(在Fortran 2003之前)没有标准的方法来解析命令行参数。我想,名称MAIN.IN
在您使用的代码中是硬连线的,它始终使用当前目录中的MAIN.IN
文件。您可以通过在执行程序之前发出更改目录命令来解决此问题。我对Windows不太熟悉,但有点像
cd E:\TROUBLESHOOT
E:\TROUBLESHOOT\NewSourceID.exe
您的批处理脚本中的可能会有效。
或者,您可以使用command_argument_count()
和get_command_argument()
函数在Fortran代码中实现正确的命令行参数解析。你需要一个Fortran 2003编译器。