Как передать местоположение файла в командный файл - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я пытаюсь создать командный файл, которому передается местоположение файла в c ++.

$(CURRENT_DIRECTORY)

^^, эта переменная в настоящее время содержит местоположение файлов. Поэтому, если вы запустите Command cmd(TEXT("$(CURRENT_DIRECTORY)"));, он откроет файловый менеджер в этом месте.

Теперь я создаю командный файл, выполняя

const char* batch_file_name = "filelocation.bat";{

std::ofstream batch_file(batch_file_name);
                batch_file <<
                    "set path_location=%1\n"
                    "%path_location%\n"
                    "cd %path_location%\n"
                    "pause\n";
            }

system("filelocation.bat " + TEXT("$(CURRENT_DIRECTORY)"));

Именно так я пытаюсь передать местоположение файлов. Кажется, выдает ошибку, хотя «выражение должно иметь целочисленный или незавершенный тип enum». Я пытался понять это, но я застрял. Есть идеи по решению?

1 Ответ

0 голосов
/ 17 апреля 2020

"filelocation.bat " + TEXT("$(CURRENT_DIRECTORY)" пытается объединить два строковых литерала (потенциально разных типов, в зависимости от того, определен UNICODE или нет). Это не будет работать. Попробуйте вместо этого:

system((string("filelocation.bat ") + "$(CURRENT_DIRECTORY)").c_str());

Или:

system(("filelocation.bat " + string("$(CURRENT_DIRECTORY)")).c_str());

Или:

ostringstream oss;
oss << "filelocation.bat " << "$(CURRENT_DIRECTORY)";
system(oss.str().c_str());

Или просто не объединяйте:

system("filelocation.bat $(CURRENT_DIRECTORY)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...