В CreateProcess documentation указано, что для запуска командного файла необходимо использовать cmd.exe /C <path to bat>
. На самом деле он может запускать командные файлы просто отлично, если только путь к скрипту не содержит пробелов (Microsoft подтверждает это в описании MS14-019 vulnerability). Интересно, возможно ли избежать пробелов в пути к пакетному файлу, чтобы сделать работу CreateProcess. Добавление котировки не поможет, CreateProcess завершается с ошибкой:Используйте CreateProcess для запуска bat с пробелами
cannot spawn "<path to batch>": No such file or directory
Update
Обойти это использовать короткие имена файлов указываемого @jac в комментариях. Мне все еще интересно, почему включение пути в двойные кавычки работает для обычных исполняемых файлов, но не работает для пакетных файлов.
Используйте [ShellExecuteEx] (https://msdn.microsoft .com/en-us/library/windows/desktop/bb762154.aspx). – IInspectable
К сожалению, у меня нет кода, который вызывает CreateProcess, поэтому переключиться на ShellExecuteEx или 'cmd.exe/C' не является вариантом. – neverov
Согласно телу вашего вопроса, вы уже знаете ответ. –