编译的fortran代码在不正确的目录中查找输入参数文件

时间:2012-12-17 03:52:22

标签: fortran executable command-prompt

我有一个编译好的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。

  1. 当我通过在运行时生成批处理脚本从VB脚本运行相同的操作时,我收到以下错误。
  2. " 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。怎么办呢?

1 个答案:

答案 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编译器。