What's the difference between the following cmd scripts?

10

1

I've tried launching several programs through a batch file and encountered problems but that is in the past.

I'm relatively new to scripts and command lines and this would be my question: What's the difference between the following cmd scripts?

This one is accepted

Start Chrome

(i'm guessing here that some installed programs are recognized by title, even though the dir is not where the chrome.exe is the program still launches, registry keys play a part in this?)

this one works also

cd "FOO_DIR"
start FOO.exe

however these don't

start "FOO_DIR\FOO.exe"

(opens a new window without launching FOO.exe)

start /B "FOO_DIR\FOO.exe"

(writes the copyright text again and does nothing else)

(OS Windows 7 x64)

Mr. Smith

Posted 2014-03-11T07:14:33.330

Reputation: 103

Answers

17

Start Chrome

This one works, because Chrome's executable is located in a folder which is in the PATH environment variable. start looks for programs in all folders in that variable. The environment variable PATHEXT contains a list of file extensions to look for and as .exe is contained by default, you don't need to write chrome.exe.


start "FOO_DIR\FOO.exe"

This does not work, because start will use its first argument as the window title if it is quoted. So this will open a new CMD with "FOO_DIR\FOO.exe" as its title.

To circumvent this, you can simply add an empty title argument before your command:

start "" "FOO_DIR\FOO.exe"

crater2150

Posted 2014-03-11T07:14:33.330

Reputation: 286

Furthermore, AFAIR, the title is mandatory when launching executables with command-line switches – abstrask – 2014-03-11T13:07:25.553

1It's not that start expects a title as its first argument (otherwise start chrome wouldn't work), it's that if its first argument is quoted, it expects it to be a title. – jamesdlin – 2014-03-12T00:23:14.360

@jamesdlin ah, the documentation on this is a bit vague, thanks. I edited the answer accordingly – crater2150 – 2014-03-12T12:45:04.697

5

Try adding "title" or at least "" after start like this:

start "title" "FOO_DIR\FOO.exe"

or

start "title" /B  "FOO_DIR\FOO.exe"

The root cause of the problem is that first argument in "" quotes is interpreted as a title parameter for new cmd window.

Also it helps to look at the command reference (link)

Art Gertner

Posted 2014-03-11T07:14:33.330

Reputation: 6 417

Thanks, that clarified the difference. And with the first one i think that "Non-executable files may be invoked through their file association just by typing the name of the file as a command." is the reason why just the name is enough... (not sure though) – Mr. Smith – 2014-03-11T08:57:22.943

If you are talking about your firts example with start chrome I believe that calling chrome works, because it is has an entry in registry somewhere here: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths If you look for chrome.exe you will most likely find the entry containing full path to executable. – Art Gertner – 2014-03-11T09:36:21.447