How to run a script with spaces in its name?

I store my script in 'My Script.m'. Is there a way to call that script without changing it to 'My_Script.m'? Thanks.
>> run 'My Script'
??? Error using ==> run at 69
Error using ==> evalin
Undefined function or method 'My' for input arguments of type 'char'.

2 Comments

Walter is correct, but can you tell us what the need is to do this?
Thank all for your answers. I was just curious about the syntax, nothing's particular.

Sign in to comment.

 Accepted Answer

No, you cannot do that, not even using run(). Script file names and function file names are required to use the same semantic rules as MATLAB identifiers: must begin with a letter (upper or lower case English alphabet), which can then be followed by any combination of digits, underscore, or upper or lower case English alphabet letters, and the total name length must be at most 63.
You could read the contents of "My Script.m" in to a string and then eval() the string, maybe.

More Answers (1)

I am not sure why you would want to do this, but you could probably overload run to take in the string with the space, copy that file to a temporary file without a space, run the temporary file, and then delete the temporary file. You would probably need to do some error catching, so you do not leave orphaned temporary files.
While it can probably be done, I don't see why you would want to.

1 Comment

I suspect, though, that if you did that (or did my eval() solution) that the return value of mfile() might be different than it would otherwise be.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!