Системный вызов Windows C с пробелами в команде - PullRequest
12 голосов
/ 15 апреля 2010

Я не могу совершать системные вызовы с пробелами в именах и параметрах. Например:

system("c:\\program files\\something\\example.exe c:\\my files\\example.txt");

Я пытался бежать всеми возможными способами, и НИЧЕГО не работает. Я пробовал:

system("\"c:\\program files\\something\\example.exe\" \"c:\\my files\\example.txt\"");

и

system("c:\\program^ files\\something\\example.exe c:\\my^ files\\example.txt");

Ни одна из них не работает. Я все еще получаю 'c: \ program' не внутренняя или внешняя команда, не имеющая отношения к ней

Это действительно сводит меня с ума ... Мне нужно вызывать и передавать параметры, в которых есть пробелы. Я не могу использовать короткую запись по причинам, по которым не буду вдаваться.

Я пытался использовать «кавычки вместо» кавычек, все еще не работает. Я пытался поместить кавычки вокруг всего и кавычки вокруг пробелов, и это не работает.

Кто-нибудь знает, как это сделать правильно?

1 Ответ

26 голосов
/ 15 апреля 2010

Редактировать: ОК, понял, войдя в вызов system(): вам нужен дополнительный набор кавычек вокруг всего этого, потому что он внутренне вызывает cmd / c ваш вход

Так что это работает для меня:

system("\"\"c:\\program files\\internet explorer\\iexplore.exe\" \"www.stackoverflow.com\"\"");

Немного беспорядка, не так ли?

...