Как запустить исполняемый файл (.exe) в Windows Powershell с пробелами в нем? - PullRequest
0 голосов
/ 06 мая 2018

Недавно я хотел попробовать Visual Studio Code для программирования на C ++. Так как я довольно новичок в C ++ и программировании в целом, я не хотел делать утомительный процесс установки для запуска программ. Поэтому я установил расширение «Code Runner», которое запускает файл cpp в терминале. Все шло отлично, пока я не захотел запускать файлы cpp с пробелами в них. После некоторых поисков я обнаружил, что расширение использует какой-то пакетный файл, чтобы изменить каталог терминала, скомпилировать его и запустить выходной файл. Когда в имени были пробелы, две части имени интерпретировались как отдельные команды. Это настройка code-runner.executorMap в настройках кода VS:

"code-runner.executorMap": {
    "javascript": "node",
    "php": "C:\\php\\php.exe",
    "python": "python",
    "perl": "perl",
    "ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
    "go": "go run",
    "html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
    "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
    "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

Вывод для этого был:

PS D:\> cd "d:\" ; if ($?) { g++ Test  1.cpp -o Test  1 } ; if ($?) { .\Test  1 }
g++.exe: error: Test: No such file or directory
g++.exe: error: 1.cpp: No such file or directory
g++.exe: error: 1: No such file or directory

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

        "c": "cd $dir && gcc \"$fileName\" -o \"$fileNameWithoutExt\" && \"./$fileNameWithoutExt\"",
        "cpp": "cd $dir && g++ \"$fileName\" -o \"$fileNameWithoutExt\" && \"./$fileNameWithoutExt\"",
        "objective-c": "cd $dir && gcc -framework Cocoa \"$fileName\" -o \"$fileNameWithoutExt\" && \"./$fileNameWithoutExt\"",}

Вывод был:

PS D:\> cd "d:\" ; if ($?) { g++ "Test  1.cpp" -o "Test  1" } ; if ($?) { "./Test  1" }
./Test

Команда "cd" и команда "g ++", казалось, работали, но часть, которая фактически выполняет программу, работала со сбоями. Он интерпретировал имя файла в двойных кавычках как строку и просто отображал его как есть, а не запускал его. Я искал в интернете решение для запуска файлов .exe с пробелами в имени, но не смог их найти. Извините, если тема не связана или это связано с моей некомпетентностью, так как я очень новичок в программировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...