Executing an EXE inside a VBScript file that has spaces in the path.

I’ve done quite a bit of scripting but ran across something that baffles me.  Trying to execute a file in a directory with a spaces in the path would bomb.  I googled and found a thing that has me put [] inside to fix it but it didn’t work.  Here is what i was trying to do, if there is no spaces in the path to the EXE including any directories, the script works fine.   Here is an example to a path for an EXE c:winntsystem32Ica PassThroughpn.exe.  Here is the script code

Set wshShell = WScript.CreateObject (“WSCript.shell”)
wshshell.run “c:winntsystem32Ica PassThroughpn.exe”, 6, True
set wshshell = nothing

Of course, this code would BOMB!  The script would return an error complaining it couldn’t find the file.    Thanks to quick posting in the news://msnews.microsoft.public.windows.server.scripting newsgroup. 

Al Dunbar, world famous fellow MVP posted the answer to my prayers!

Your .run command is trying to run something called “C:winntsystem32ica” and pass it a parameter called “PassThroughpn.exe”. This is the same thing you would get if you typed the following at a command prompt:

    c:winntsystem32Ica PassThroughpn.exe

If the name of the file to run is actually “c:winntsystem32Ica PassThroughpn.exe”, you would enter it at the command prompt as:

    “c:winntsystem32Ica PassThroughpn.exe”

The double quotes in your code do not form part of the filename string being passed to the .run method, they are required to indicate a literal string.
You can prove this is the case by changing your script to look like this:

> Set wshShell = WScript.CreateObject (“WSCript.shell”)
> wshshell.run c:winntsystem32Ica PassThroughpn.exe, 6, True
> set wshshell = nothing


Which will throw a syntax error (for rather obvious reasons). You need to pass a string that actually contains the quoted filename, which can be done this way:

> wshshell.run “””c:winntsystem32Ica PassThroughpn.exe”””, 6, True

Within a literal string, a single double-quote character is represented by two double-quote characters.   Notice the Three double quotes around the string,  This worked!  Thought I’d pass this tip along.