Как указать путь к файлу в c
Перейти к содержимому

Как указать путь к файлу в c

  • автор:

Как узнать и скопировать полный путь к файлу в Windows 10

Как узнать и скопировать полный путь к файлу в Windows 10

Иногда в командной строке или при создании .BAT файла требуется указать полный путь к файлу. Некоторые начинающие пользователи не знают, как узнать полный путь к файлу, другие начинают его старательно набирать вручную, несмотря на нахождение этого файла не в самом удобном расположении. Есть способ проще — вы можете в два клика скопировать полный путь к файлу и вставить его.

В этой крайне короткой инструкции о том, как узнать и скопировать полный путь к файлу или папке в Windows 10, способ подойдет и для предыдущих версий системы.

  • Как узнать полный путь к файлу или папке
  • Как скопировать путь к файлу в буфер обмена
  • Видео инструкция

Как узнать путь к файлу или папке

Если вам требуется узнать путь к файлу или папке в Windows, используя только встроенные средства системы, достаточно перейти в нужную папку, посмотреть путь к ней в адресной строке проводника и добавить к нему имя файла после знака «\». Также вы можете открыть свойства файла (нажав правой кнопкой мыши по нему и выбрав нужный пункт) и увидеть там путь к нему в поле «Расположение».

Посмотреть путь к файлу в Windows

К этому расположению (которое можно скопировать из окна свойств) также добавляем \ и имя файла, которое также отображается в свойствах — получаем полный путь к файлу, например, для скриншота выше путь буде выглядеть как C:\Windows\Winhlp32.exe. Но это не обязательно делать вручную, есть способ проще.

Копирование пути к файлу или папке

В сторонних файловых менеджерах есть свои функции для выполнения рассматриваемой задачи, но вы можете легко скопировать путь к файлу и во встроенном проводнике Windows 10:

Копировать полный путь к файлу в Windows 10

  1. Найдите нужный файл в проводнике.
  2. Удерживая Shift, нажмите правой кнопкой по этому файлу.
  3. Выберите пункт контекстного меню «Копировать как путь».

Готово — теперь вы можете вставить (Ctrl+V, Shift+Insert или через контекстное меню) в любое место, например, в командную строку. Путь к файлу вставляется в кавычках — для большинства применений удалять их не обязательно.

Копирование пути к папке еще проще: находясь в нужной папке, нажмите указателем мыши в правой части адресной строки проводника — весь путь будет выделен.

Скопировать путь к папке в Windows 10

Скопируйте его в буфер обмена — Ctrl+C, Ctrl+Insert или с использованием контекстного меню.

Видео инструкция

Надеюсь, несмотря на краткость, материал окажется полезным для кого-то из читателей.

А вдруг и это будет интересно:

  • Лучшие бесплатные программы для Windows
  • Как разрешить обычному пользователю запускать программу от имени Администратора без ввода пароля
  • Как выйти из полноэкранного режима в Windows
  • Как включить компактный вид панели быстрых настроек Windows 11
  • Шрифты в интерфейсе Chrome стали более жирными и размытыми — как исправить?
  • Msftconnecttest.com — что это и как исправить возможные ошибки
  • Windows 11
  • Windows 10
  • Android
  • Загрузочная флешка
  • Лечение вирусов
  • Восстановление данных
  • Установка с флешки
  • Настройка роутера
  • Всё про Windows
  • В контакте
  • Одноклассники

    Дмитрий 10.05.2020 в 11:03

Получение пути текущего проекта C++

Как в консольном приложении на C++ получить путь к текущему проекту ? Можно ли как-то использовать для этого переменные IDE, такие как $(TargetDir), например ?

Отслеживать
задан 4 фев 2016 в 4:50
oleg.vorobiov oleg.vorobiov
349 2 2 серебряных знака 13 13 бронзовых знаков
Именно путь к проекту, где лежат исходники?
4 фев 2016 в 5:09
Да, именно так )
4 фев 2016 в 5:11

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Идём в настройки проекта. Далее: Configuration Properties->Debugging->Command Arguments. Жмём Edit. в этом поле, после чего появляется диалог. Выбираем Macros>>, далее выбираем нужный нам макрос и нажимаем Insert. Вам нужен $(ProjectDir) . После этого, в коде, получить нужный нам параметр очень просто:

#include using namespace std; int main(int argc, char** argv)

Отслеживать
ответ дан 4 фев 2016 в 5:34
23.8k 3 3 золотых знака 48 48 серебряных знаков 62 62 бронзовых знака
Спасибо за помощь!
4 фев 2016 в 5:51

Вы можете написать внешний скрипт, к примеру на Python, который будет знать месте расположения вашего проекта. В процессе сборки проекта он пусть запускается первым и зная место расположения будет изменять *.cpp файл.

Отслеживать
ответ дан 4 фев 2016 в 5:35
4,012 2 2 золотых знака 20 20 серебряных знаков 43 43 бронзовых знака

Если сборка проекта осуществляется через CMake, то можно использовать переменную CMAKE_CURRENT_SOURCE_DIR (абсолютный путь до директории, где расположен текущий CMakeLists.txt), либо переменную CMAKE_SOURCE_DIR (абсолютный путь до директории, где расположен корневой CMakeLists.txt).

Если необходимо использовать значения этих переменных в исходном коде, то можно добавить следующую команду:

target_compile_definitions($ PRIVATE RESOURCES_DIR=\"$/resources\") 

Теперь можно использовать макрос RESOURCES_DIR в коде.

Отслеживать
ответ дан 4 фев 2016 в 8:09
Pavel Parshin Pavel Parshin
9,239 1 1 золотой знак 27 27 серебряных знаков 48 48 бронзовых знаков
Спасибо, полезно )
4 фев 2016 в 8:44

Если нужно чтобы путь был известен при работе из IDE, то, как верно было указано в ответе @ixSci, можно передавать $(ProjectDir) . Но как только приложение будет скомпилировано и перенесено на другой компьютер, работать это перестанет. Можно воспользоваться советом из ответа @sys_dev и написать внешний скрипт. А можно использовать стандартный макрос, который есть в любом уважающем себя компиляторе — __FILE__ . Этот макрос после обработки препроцессором превращается в путь и имя текущего файла.

Следует иметь в виду, что в GCC/MinGW будет путь и имя, а в MSVC++ — только имя. Чтобы MSVC++ выдала ещё и путь, нужно добавить компилятору параметр /FC (https://msdn.microsoft.com/en-us/library/b0084kay.aspx).

Отслеживать
ответ дан 4 фев 2016 в 6:18
user194374 user194374
А какой смысл имеет путь к проекту на другом компьютере? Вообще, вне среды он смысл имеет нулевой.
4 фев 2016 в 6:23

@ixSci Ак то ж его знает? Всё может быть. 😉 Я использовал. Но, правда, не путь, а путь с именем файла. Записывал его в лог.

– user194374
4 фев 2016 в 6:25

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

Как указать путь к файлу в c

Для работы с файлами в стандартной библиотеке определен заголовочный файл fstream , который определяет базовые типы для чтения и записи файлов. В частности, это:

  • ifstream : для чтения с файла
  • ofstream : для записи в файл
  • fstream : совмещает запись и чтение

Для работы с данными типа wchar_t для этих потоков определены двойники:

  • wifstream
  • wofstream
  • wfstream

Открытие файла

При операциях с файлом вначале необходимо открыть файл с помощью функции open() . Данная функция имеет две версии:

  • open(путь)
  • open(путь, режим)

Для открытия файла в функцию необходимо передать путь к файлу в виде строки. И также можно указать режим открытия. Список доступных режимов открытия файла:

  • ios::in : файл открывается для ввода (чтения). Может быть установлен только для объекта ifstream или fstream
  • ios::out : файл открывается для вывода (записи). При этом старые данные удаляются. Может быть установлен только для объекта ofstream или fstream
  • ios::app : файл открывается для дозаписи. Старые данные не удаляются.
  • ios::ate : после открытия файла перемещает указатель в конец файла
  • ios::trunc : файл усекается при открытии. Может быть установлен, если также установлен режим out
  • ios::binary : файл открывается в бинарном режиме

Если при открытии режим не указан, то по умолчанию для объектов ofstream применяется режим ios::out , а для объектов ifstream — режим ios::in . Для объектов fstream совмещаются режимы ios::out и ios::in .

std::ofstream out; // поток для записи out.open("hello1.txt"); // окрываем файл для записи std::ofstream out2; out2.open("hello2.txt", std::ios::app); // окрываем файл для дозаписи std::ofstream out3; out2.open("hello3.txt", std::ios::out | std::ios::trunc); // установка нескольких режимов std::ifstream in; // поток для чтения in.open("hello4.txt"); // окрываем файл для чтения std::fstream fs; // поток для чтения-записи fs.open("hello5.txt"); // окрываем файл для чтения-записи

Однако в принципе необязательно использовать функцию open для открытия файла. В качестве альтернативы можно также использовать конструктор объектов-потоков и передавать в них путь к файлу и режим открытия:

fstream(путь) fstream(путь, режим)

При вызове конструктора, в который передан путь к файлу, данный файл будет автоматически открываться:

std::ofstream out("hello.txt"); std::ifstream in("hello.txt"); std::fstream fs("hello.txt", std::ios::app);

В данном случае предполагается, что файл «hello.txt» располагается в той же папке, где и файл программы.

Вообще использование конструкторов для открытия потока является более предпочтительным, так как определение переменной, представляющей файловой поток, уже преполагает, что этот поток будет открыт для чтения или записи. А использование конструктора избавит от ситуации, когда мы забудем открыть поток, но при этом начнем его использовать.

В процессе работы мы можем проверить, окрыт ли файл с помощью функции is_open() . Если файл открыт, то она возвращает true:

std::ifstream in; // поток для чтения in.open(«hello.txt»); // окрываем файл для чтения // если файл открыт if (in.is_open())

Закрытие файла

После завершения работы с файлом его следует закрыть с помощью функции close() . Также стоит отметить, то при выходе объекта потока из области видимости, он удаляется, и у него автоматически вызывается функция close.

#include #include int main() < std::ofstream out; // поток для записи out.open("hello.txt"); // окрываем файл для записи out.close(); // закрываем файл std::ifstream in; // поток для чтения in.open("hello.txt"); // окрываем файл для чтения in.close(); // закрываем файл std::fstream fs; // поток для чтения-записи fs.open("hello.txt"); // окрываем файл для чтения-записи fs.close(); // закрываем файл >

Как форматировать путь к файлу в С

Существует файл -> «0x1e345f789912345e78991234567899123d567899.txt» Имеется массив -> unsigned char add[20]; в котором находятся 20 чисел. ВОПРОС: Возможно ли перевести числа в массиве в формат Hex и подставить в путь к файлу ?

 FILE *fp; char fileName[] = "что ввести сюда, если это возможно?"; char *source_str; size_t source_size; /* Load the source code containing the kernel*/ fp = fopen(fileName, "r"); if (!fp)

Отслеживать

222k 15 15 золотых знаков 120 120 серебряных знаков 234 234 бронзовых знака

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *