我想运行Windows任务计划程序运行的八度gui(八进制gui(通过安装程序安装的八度5.1,并且路径路径变量中包含“ C:\ Octave \ mingw64 \ bin”))脚本。我必须运行octave-gui,因为我想使用qt工具包来绘制不支持octave(无gui)的图表。因此,我通常使用简单的蝙蝠文件,例如“ octave-gui --no-gui c:\ path \ myfile.m”。
但是问题是我无法通过单击Windows资源管理器或从命令行运行来运行此bat文件。即使是内容为“ octave-gui --no-gui”的最简单的蝙蝠文件也给我以下错误:
但是有趣的是,我可以使它以某种方式起作用:
但这不是解决方案,对吗?这仅在(交互式)命令行中有效。如何在任务计划程序中工作?
因此,您是否有一种解决方案,可以使用octave-gui或带有qt工具箱的octave运行批处理文件。
答案 0 :(得分:2)
命令octave
在技术上不正确。
它仅在命令提示符窗口中有效,因为其扩展名.bat
列在分配给未修改的环境变量%PATHEXT%
的值中。它还假定在环境变量octave.com
下列出的任何目录中的任何位置都没有名为octave.exe
或%PATH%
的其他文件。另外,它还假定在调用时在当前目录中没有名为octave
的可执行文件,扩展名为%PATHEXT%
。
出于安全考虑,您应该改为使用octave.bat
。
octave.bat
Octave.bat
将解析任何输入参数,设置所需的环境,然后运行start octave-gui.exe --gui %*
或octave-cli.exe %*
(如果它检测到--no-gui
作为输入参数之一)。
另外,当从另一个运行批处理文件时(在这种情况下为start_my_octave_script.bat
),如果希望以后再返回到该文件,则应Call
运行它,几乎可以肯定是这种情况
call octave.bat <command line options>
如果您对自己的%PATHEXT%
环境变量未修改或至少拥有默认值感到满意,则可以省略.bat
扩展名,但请记住先前的建议。
call octave <command line options>
答案 1 :(得分:0)
由于Compo的提示,我做出了解决方法。在我看来,必须在“ octave.bat”中完成一个解决方案,所以我做到了。我制作了一个副本并将其命名为“ octave-gui-nogui-withqt.bat”,并删除了所有gui检查内容,仅运行“ octave-gui.exe --no-gui”(向下滚动):
:; # if running from bash, recall using cmd.exe
:; cmd.exe //c "$0" "$@"; exit $?
@echo off
Rem Find Octave's install directory through cmd.exe variables.
Rem This batch file should reside in Octaves installation bin dir!
Rem
Rem This trick finds the location where the batch file resides.
Rem Note: the result ends with a backslash.
set OCT_HOME=%~dp0\.\..\
Rem Convert to 8.3 format so we don't have to worry about spaces.
for %%I in ("%OCT_HOME%") do set OCT_HOME=%%~sI
Rem Set up PATH. Make sure the octave bin dir comes first.
set PATH=%OCT_HOME%qt5\bin;%OCT_HOME%bin;%PATH%
Rem Set up any environment vars we may need.
set TERM=cygwin
set GNUTERM=wxt
set GS=gs.exe
Rem QT_PLUGIN_PATH must be set to avoid segfault (bug #53419).
IF EXIST "%OCT_HOME%\qt5\bin\" (
set QT_PLUGIN_PATH=%OCT_HOME%\qt5\plugins
) ELSE (
set QT_PLUGIN_PATH=%OCT_HOME%\plugins
)
Rem set home if not already set
if "%HOME%"=="" set HOME=%USERPROFILE%
if "%HOME%"=="" set HOME=%HOMEDRIVE%%HOMEPATH%
Rem set HOME to 8.3 format
for %%I in ("%HOME%") do set HOME=%%~sI
Rem Start Octave (this detaches and immediately returns).
Rem make this call in order to have qt on the cli
octave-gui.exe --no-gui %*
这是最优雅的吗?我猜上游Octave应该允许一个新的选项,例如“ --no-gui-but-use-qt”或类似的选项。你怎么看? 仍然让我感到困惑的是,“ octave-cli.exe”和“ octave-gui.exe”除了可见的gui之外还有更多区别。