При использовании system () в C ++ в Windows, почему для вызова программы в другом каталоге требуются две кавычки? - PullRequest
2 голосов
/ 24 июля 2011

У меня в папке utils есть программа find.exe.Это не работает:

system("\"utils/find.exe\"");

Все, что я получаю, это

'utils' is not recognized as an internal or external command,
operable program or batch file.

Однако по какой-то причине это работает:

system("\"\"utils/find.exe\"\"");

Повтор строки в кавычках

system("echo \"utils/find.exe\"");

вывод

"utils/find.exe"

... так зачем мне две кавычки?

Ответы [ 3 ]

3 голосов
/ 24 июля 2011

Я предполагаю, что вы находитесь в Windows, потому что вы пытаетесь выполнить файл .exe.Поэтому вместо того, чтобы писать «utils / find.exe», попробуйте написать «utils \ find.exe».В Windows символом-разделителем является «\», поэтому он, вероятно, видит «utils» как команду, поскольку «/» игнорируется.

1 голос
/ 24 июля 2011

Возможно, system() передает вашу командную строку в оболочку, например, cmd.exe, что также требует цитирования?

0 голосов
/ 25 июля 2011

Несмотря на то, что вы можете использовать оба / и \ в качестве разделителей каталогов в Windows, командный процессор попытается интерпретировать все, что начинается с /, в качестве переключателя. Попробуйте это:

system("\"utils\\find.exe\"");
...