octave-gui, вызываемый сценарием bat, не работает, если вы ранее не запускали octave (-gui) (или "запускаете octave-cli.exe с qt") - PullRequest
0 голосов
/ 10 октября 2019

Я хочу запустить octave-gui (Octave 5.1 установлен с установщиком, а «C: \ Octave \ mingw64 \ bin» находится в переменной пути), сценарии, запускаемые планировщиком задач Windows. Мне нужно запустить octave-gui, так как я хочу использовать инструментарий qt для построения графика, который октава (без gui) не поддерживает. Поэтому я обычно использую простые файлы bat, такие как "octave-gui --no-gui c: \ path \ myfile.m".

Но проблема в том, что я не могу запустить этот файл bat, щелкнув в проводнике Windowsили работает из командной строки. Даже самый простой bat-файл с содержанием «octave-gui --no-gui» выдает мне следующую ошибку:

octave-gui error

Но самое смешноев том, что я могу заставить его работать как-то:

  1. открыть командную строку
  2. запустить "octave" или "octave-gui" и закрыть / выйти из нее
  3. , затем яможет ли файл bat из командной строки

make it run

Но это не могло быть решением, не так ли? Это работает только в (интерактивной) командной строке. Как это работает в планировщике заданий?

Итак, у вас есть решение для запуска пакетных файлов с использованием octave-gui или octave с инструментарием qt.

Здесьэто обходной путь с "где", как спросил Герхард: workaround with where

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Команда octave технически неверна.

Она работает только из окна командной строки, поскольку ее расширение .bat указано в пределах значений, присвоенных неизмененной переменной среды %PATHEXT%. Также предполагается, что в любом из каталогов, перечисленных в переменной среды %PATH%, нет других файлов с именем octave.com или octave.exe. Кроме того, он также предполагает, что в текущем каталоге нет исполняемого файла с именем 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>
0 голосов
/ 11 октября 2019

Я сделал обходной путь благодаря подсказкам, сделанным Компо. Мне кажется, что решение должно быть сделано в "octave.bat", и я так и сделал. Я сделал копию и назвал ее «octave-gui-nogui-withqt.bat», удалил все элементы проверки графического интерфейса и запускаю только «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» есть больше отличий, кроме видимого графического интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...