Когда вы вызываете CreateProcess (), System () и т. Д., Убедитесь, что вы заключили двойные кавычки в строки имени файла (включая имя файла командной программы) на случай, если в именах файлов и / или в полном пути указан пробел в противном случае части пути к имени файла будут интерпретироваться интерпретатором команд как отдельные аргументы.
system("\"d:some path\\program.exe\" \"d:\\other path\\file name.ext\"");
Для Windows рекомендуется использовать CreateProcess (). Он имеет более сложную настройку, но у вас больше контроля над тем, как запускаются процессы (как описано Грегом Хьюгиллом). Для быстрого и грязного вы также можете использовать WinExec ().
(system () переносима в UNIX).
При запуске командных файлов может потребоваться запуск с помощью cmd.exe (или command.com).
WinExec("cmd \"d:some path\\program.bat\" \"d:\\other path\\file name.ext\"",SW_SHOW_MINIMIZED);
(или SW_SHOW_NORMAL
, если вы хотите, чтобы окно команд отображалось).
Windows должна найти command.com или cmd.exe в системной переменной PATH, поэтому не нужно указывать полное имя, но если вы хотите быть уверенным, вы можете составить полное имя файла, используя CSIDL_SYSTEM
(не используйте просто C: \ Windows \ system32 \ cmd.exe).