问题描述
我试图在Code :: Blocks中使用EXECUTE_COMMAND_LINE(Fortran)通过Windows命令提示符下的快捷方式启动程序。我已经多次检查了路径和语法,并且一切都正确,但是,每当我编译并运行代码时,当脚本到达此命令时,我都会收到一条错误消息,指出“指定的路径不存在。请检查路径,然后再试一次。”。 更奇特的是,在命令提示符下直接在EXECUTE_COMMAND_LINE中使用完全相同的命令,可以成功启动应用程序,而不会出现任何问题。 我使用的命令如下:
CALL EXECUTE_COMMAND_LINE("start C:\Users\dimpa\Desktop\Giannako\Optimization\VBA\SLDA.lnk")
我运行Windows 10,代码:: Blocks 20.03,并具有用于Fortran的MinGW编译器。
还使用SYSTEM获得了完全相同的结果。另外,如果有什么用可以帮助我弄清楚发生了什么,该命令也可以正常工作:
CALL EXECUTE_COMMAND_LINE("start C:\Users\dimpa\Desktop\Giannako\Optimization\VBA")
将文件夹VBA打开到我的文件资源管理器。该问题似乎与打开应用程序的快捷方式有关。此外,即使在IDE中(程序文件中的任何内容都无法访问),打开位于dimpa \ Appdata文件夹中的文件(原始的.exe,而不是快捷方式)似乎仍然可以正常工作。
谢谢。
解决方法
干杯,经过无休止的试验,我似乎找到了解决方法。
问题在于所使用的快捷方式的原始程序路径中包含空格。显然,编译器不喜欢执行快捷方式,该快捷方式最初可能在初始路径中不包含空格,但是当重定向到原始程序时可能会遇到各种各样的情况。
我尝试执行的快捷方式包含一个通向Program Files的路径,并打开了一个要在上述程序(“ / m”)中执行的附加插件。在意识到尝试使用150个字符串长度的目标来运行快捷方式会使事情复杂化之后,我直接将快捷方式的目标输入Windows cmd,它运行得非常好,并且更易于剖析和检查以便正确编写代码:
CALL SYSTEM(""Full Path to Program" "/m" "Full Path to Addon"")
希望这可以帮助面临类似问题的人!