Проблема с системной командой в MATLAB - PullRequest
2 голосов
/ 10 января 2010

Я использую системную команду в MATLAB следующим образом (с текущим каталогом 'scripts'):

[status, result] = system('cd ..\\TxtInOut')

Однако вызов системной команды, похоже, не работает. Возвращает status = 0 и result = ''.

Есть предложения?

Ответы [ 4 ]

7 голосов
/ 10 января 2010

Если вы хотите изменить каталоги , вам следует использовать команду CD . Аргумент может быть полным или относительным путем:

cd('c:\matlab\toolbox');  %# Full path to a directory
cd('scripts');            %# Move to a subdirectory "scripts"
cd('..\TxtInOut');        %# Move up one level, then to directory "TxtInOut"

Если вы хотите получить информацию о каталоге , вам следует использовать команду DIR . DIR вернет структуру информации m-by-1 для каталога, где m - количество файлов и папок в каталоге. Опять же, аргумент может быть полным или относительным путем:

data = dir('c:\matlab\toolbox');  %# Data for a full path to a directory
data = dir('scripts');            %# Data for a subdirectory "scripts"

ПРИМЕЧАНИЕ: При работе на разных платформах (например, Windows или UNIX) вам нужно будет обратить внимание на то, используете ли вы разделитель файлов \ или /. Вы можете получить разделитель файлов для вашей платформы, используя функцию FILESEP . Вы также можете создавать пути к файлам, используя функцию FULLFILE .

3 голосов
/ 10 января 2010

Любая команда, выполняемая системой, является внешней по отношению к MATLAB. Командная оболочка генерируется, выполняет ваш запрос, а затем возвращает результат. Результат 0 указывает на успешное завершение: командная оболочка изменила свой текущий каталог в соответствии с запросом и затем вернулась. (Командные оболочки используют ненулевое значение для обозначения ошибки, потому что обычно программа может потерпеть неудачу, а не успешно). К сожалению, это влияет только на текущий каталог командной оболочки - см. Ответ gnovice о том, как на самом деле изменить каталог.

0 голосов
/ 12 января 2010

Вы также можете использовать базовые команды операционной системы, поставив перед ними восклицательный знак.

Например:

  • !dir покажет вам текущее содержимое каталога в Windows
  • !pwd покажет вам текущий каталог в Linux / Mac

Но вызов cd не изменит текущий каталог!

0 голосов
/ 10 января 2010

вы можете использовать cd, dir, ls и т. Д. Непосредственно в Matlab без системных функций вызова.

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