tags:

views:

278

answers:

4

I am using the system command in MATLAB as follows (with the current directory being 'scripts'):

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

However, invoking the system command does not seem to work. It returns status = 0 and result = ''.

Any suggestions?

+1  A: 

you can use cd, dir, ls, etc directly in matlab without call system functions.

Yin Zhu
+7  A: 

If you want to change directories, you should use the CD command. The argument can be either a full path or relative path:

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"

If you want information about a directory, you should use the DIR command. DIR will return an m-by-1 structure of information for a directory, where m is the number of files and folders in the directory. Again, the argument can be either a full path or relative path:

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

NOTE: When working on different platforms (i.e. Windows or UNIX), you will have to pay attention to whether you use the file separator \ or /. You can get the file separator for your platform using the function FILESEP. You can also build your file paths using the function FULLFILE.

gnovice
+3  A: 

Any command executed by "system" is external to MATLAB. A command shell is generated, executes your request, and then returns the result. The 0 result indicates successful completion: the command shell changed its current directory as requested and then returned. (Command shells use non-zero to indicate an error, because there are usually many more ways that a program can fail than succeed.) Unfortunately that only affects the command shell's current directory - see gnovice's answer for how to actually change the directory.

kwatford
A: 

You can also use the underlying operating system commands by preceding them by an exclamation sign.

For instance:

  • !dir will show you the current directory contents in Windows
  • !pwd will show you the current directory in Linux/Mac

But calling cd does not change the current directory!

Pablo Rodriguez

related questions