Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что делать если не работает функция system() в C++?

Kelzi Мастер (1886), закрыт 1 неделю назад
Перепробовал всё, перерыл весь интернет, пробовал код от ChatGPT и сам уже голову себе раз 100 сломал, ничего не помогло, в общем мне нужно выполнить данную команду CMD при помощи C++:

 "C:\Program Files\WinRAR\WinRAR.exe" x -p123 "C:\Users\User\source\repos\Test repo\x64\Debug\File.rar" "C:\Users\User\source\repos\Test repo\x64\Debug\Logs" 
Пробовал такой код:
 system("\"C:\\Program Files\\WinRAR\\WinRAR.exe\" x -p123 \"C:\\Users\\User\\source\\repos\\Test repo\\x64\\Debug\\File.rar\" \"C:\\Users\\User\\source\\repos\\Test repo\\x64\\Debug\\Logs\""); 
Он выдаёт вот такую ошибку:
 "C:\Program" не является внутренней или внешней 
командой, исполняемой программой или пакетным файлом.

Так-же пробовал вот такой код:
 system(R"("\"C:\Program Files\WinRAR\WinRAR.exe\"" x -p123 "C:\Users\User\source\repos\Test repo\x64\Debug\File.rar" "C:\Users\User\source\repos\Test repo\x64\Debug\Logs")"); 

Тоже ошибка, но уже другая:
 Синтаксическая ошибка в имени файла, имени папки или метке тома. 

Ещё пробовал такой код:
 system(R"("C:\Program Files\WinRAR\WinRAR.exe" x -p123 "C:\Users\User\source\repos\Test repo\x64\Debug\File.rar" "C:\Users\User\source\repos\Test repo\x64\Debug\Logs")"); 

Но снова мимо:
 "C:\Program" не является внутренней или внешней 
командой, исполняемой программой или пакетным файлом.

У меня закончились идеи как это пофиксить и где найти ответ, буду очень благодарен если кто-то поможет
Лучший ответ
Сергей Гений (56587) 1 неделю назад
Дичь какая-то с этими скобками и кавычками.
KelziМастер (1886) 1 неделю назад
Ну это то понятно, но как это исправить?
Сергей Гений (56587) Kelzi, Пишут что обычно командная строка должна принимать полный пусть в кавычках, но на некоторых динозаврах аки виндовс нужно выносить название диска за кавычки. Raw строка будет выглядеть так: R"(C:\"Program Files\WinRAR\WinRAR.exe" .... )"
Остальные ответы
Cerber Os Ученик (175) 1 неделю назад
она работает просто нужно название папок с пробелами - указывать в кавычках, например "Program Files" и т.д.
.
Просто по правилам C++ внутри строки укажите кавычки у папок с пробелами.
KelziМастер (1886) 1 неделю назад
Как именно указать? Так?
 system("\"C:\\\"Program Files\"\\WinRAR\\WinRAR.exe\" x -p123 \"C:\\Users\\User\\source\\repos\\Test repo\\x64\\Debug\\File.rar\" \"C:\\Users\\User\\source\\repos\\Test repo\\x64\\Debug\\Logs\""); 

Если да то вылазит вот такая ошибка:
 Синтаксическая ошибка в имени файла, имени папки или метке тома. 

А если вы про это:
 system("\"C:\\Program Files\\WinRAR\\WinRAR.exe\" x -p123 \"C:\\Users\\User\\source\\repos\\Test repo\\x64\\Debug\\File.rar\" \"C:\\Users\\User\\source\\repos\\Test repo\\x64\\Debug\\Logs\""); 

То я так и пробовал в примерах выше, но почему-то всё равно не работало
Cerber Os Ученик (175) Kelzi, не только у этой папки кавычки. а у всех папок в имени которых есть пробелы... задумайся)
Cerber OsУченик (175) 1 неделю назад
и так же не только папок но и файлов, если есть пробелы - кавычки надо
Cerber OsУченик (175) 1 неделю назад
проверь у тебя там еще есть название папки с пробелом
Похожие вопросы