Windows uses the space character to delimit each of the arguments to the executable. So, some_exe.exe arg1 arg2 has two arguments. The problem occurs when the arguments have spaces in them. For example, some_exe.exe C:\Program Files C:\Program would be seen as argument 1 and Files would be seen as argument 2, which is not what you were intending. Placing double quotes around each argument tells windows that everything within the quotes is one argument. some_exe.exe "C:\Program Files" sends C:\Program Files as a single argument, avoiding the problem caused by the spaces. It doesn't hurt anything to use quotes even when you don't need them. So when you're using variables to pass arguments that might have spaces, just stick quotes around them to ensure that they're treated as a single argument. Hence, some_exe.exe "[ROMPath]\[RomFile]" I hope that helps you understand why the quotes are needed