Как вызвать .exe (C ++) из консоли windows для создания папки в другом каталоге (или любом каталоге)? - PullRequest
0 голосов
/ 19 июня 2020

Уже пару дней безуспешно исследую топи c. Я C ++ ладья ie, и на практике я решил сделать базовую c (очень-очень базовую c) копию системы контроля версий .

Я разделил проект на шаги . Первый шаг (разделенный на действия):

  1. Пользователь ищет в консоли windows каталог, в котором находятся файлы, которые он хочет отслеживать. Допустим, он достиг желаемого пути: C: \ MyProjectFolder \ ProjectToTrack>
  2. Попав внутрь ProjectToTrack папку, пользователь применяет эту команду: C: \ MyProjectFolder \ ProjectToTrack> emi track . "emi" - это имя .EXE, который я создал в C ++, а параметр track сообщает исполняемый файл для создания скрытой папки внутри папки ProjectToTrack .
    • Примечание. Очевидно, что emi.exe отсутствует в пути C: \ MyProjectFolder \ ProjectToTrack , предположим, что emi.exe находится в C: \ ProgramFiles \ emi \ emi.exe

Вот и все, как только это будет сделано, я пройду второй шаг , но я займусь этой проблемой позже.

А пока , после практики и изучения документации я получил:

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

Но я все еще не могу получить:

  1. Вызов emi.exe (C: \ ProgramFiles \ emi \ emi.exe) через консоль из любого каталога (необходимо для отслеживания любого файла в любой папке).
  2. Когда применяется C: \ MyProjectFolder \ ProjectToTrack> emi track , я знаю, как отправить параметр track к emi.exe , однако очевидно, что я должен также захватить текущий путь (путь, к которому я получил доступ с консоли), так что emi. exe знает, где создать скрытую папку трассировки; ну, я до сих пор не понимаю, как захватить и отправить этот путь к основной функции .exe.

Я не нашел ничего, связанного с тем, что мне нужно, engli sh это не мой язык по умолчанию, так что, возможно, я не использую правильные термины, я надеюсь, что то, что я здесь сказал, понятно.

PS.1. Сейчас я пытаюсь построить это проект с использованием "windows .h" , я был бы признателен, если бы ваши комментарии были связаны с этой библиотекой. Как только я это пойму, я начну практиковаться в переносимости.

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Если пользователь не передает целевой путь явно в качестве параметра, EXE может использовать функцию Win32 GetCurrentDirectory() или в C ++ 17 и более поздних версиях стандартную std::filesystem::current_path() функция, чтобы получить его текущий «рабочий каталог».

Если пользователь переходит в окно консоли на C:\MyProjectFolder\ProjectToTrack, а затем выполняет C:\ProgramFiles\emi\emi.exe, текущий рабочий каталог изначально будет C:\MyProjectFolder\ProjectToTrack.

0 голосов
/ 20 июня 2020
  1. Вызов emi.exe (C: \ ProgramFiles \ emi \ emi.exe) через консоль из любого каталога (необходимо для отслеживания любого файла в любой папке).

Для этого вам нужно добавить папку вашего исполняемого файла (например, C: \ ProgramFiles \ emi) в системную глобальную переменную с именем PATH (оба Windows и Linux работают таким образом , и это также должна быть ОС MA C, но я никогда ею не пользовался).

Когда C: \ MyProjectFolder \ ProjectToTrack> применяется дорожка emi, я знаю, как отправить дорожку параметров в emi.exe, однако очевидно, что я также должен записать текущий путь (путь, к которому я получил доступ из console), чтобы emi.exe знал, где создать скрытую папку трассировки; ну, я до сих пор не понимаю, как захватить и отправить этот путь к основной функции .exe.

Для этого взгляните на эту функцию STD здесь: https://en.cppreference.com/w/cpp/filesystem/current_path (лично я никогда не использовал его, но должно быть именно то, что вы ищете).

Удачи в ваших начинаниях!

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