Путь (англ. path ) — набор символов, показывающий расположение файла или каталога в файловой системе.
В операционных системах UNIX разделительным знаком при записи пути является «/». В Windows — «». Эти знаки служат для разделения названия каталогов, составляющих путь к файлу.
Например, в следующей записи адресации /home/user_viki/foo/bar.txt часть bar.txt — это имя файла, а /home/user_viki/foo — путь к нему.
Путь может быть абсолютным или относительным. Полный или абсолютный путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущего рабочего каталога или других обстоятельств. Полный путь всегда начинается с корневого каталога. Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активных приложений.
Для эффективного поиска файлов UNIX-подобные операционные системы, как правило, имеют системную переменную $PATH в командной оболочке (например, sh ), которая задает перенаправления к важнейшим исполняемым файлам. Узнать значение этой переменной можно с помощью команды echo $PATH или аналогичной.
Как найти путь к файлу или папке программы
Представления пути по операционной системе и оболочке [ править | править код ]
Командная оболочка UNIX | / | / | . | .. |
[имя сервера]
A:PICTURE.JPG
SERVER01USERDOCSLETTER.TXT
[PSSnapIn name][PSProvider name:][:PSDrive root]
Server01userdocsLetter.txt
UserDocs:/Letter.txt
Variable:PSVersionTable
Registry::HKEY_LOCAL_MACHINESOFTWARE
Microsoft.PowerShell.SecurityCertificate::CurrentUser
[NODE[«accountname password»]]::[имя устройства]:
DF0:S/Startup-Sequence
S:Startup-Sequence
TCP:en.wikipedia.com/80
Net#MainServer::DataDrive.$.Main.sy10823
LanMan::WindowsC.$.Pictures.Japan/gif
NFS: для каталогов или файлов могут также включать относительный путь.
Синтаксис UNC-пути к принтеру следующий: СерверСетевойПринтер , где Сервер — сетевое имя компьютера, СетевойПринтер — это сетевое имя общего принтера на этом компьютере.
Синтаксис UNC-пути к каталогу или файлу следующий: СерверСетевойКаталог[ОтносительныйПуть] , где Сервер — сетевое имя компьютера, СетевойКаталог — это сетевое имя общего каталога на этом компьютере, а ОтносительныйПуть — путь к каталогу или файлу из общего каталога.
СетевойКаталог не обязательно называется так же, как ассоциированный с ним каталог на сервере, имя даётся в ходе открытия общего доступа к каталогу в файловой системе компьютера [ источник не указан 2983 дня ] .
Некоторые API-вызовы в Microsoft Windows поддерживают использование так называемых Long UNC или UNCW: ?UNCСерверСетевойКаталог[ОтносительныйПуть] или ?Диск:[Каталог][Файл] , где Диск — буква диска, Каталог — имя каталога на диске, Файл — имя файла в каталоге или на диске [ источник не указан 2983 дня ] .
В версиях Windows, предшествовавших Windows XP, только API-вызовы, использующие Long UNC, могли использовать пути длиной более 260 символов [ источник не указан 2983 дня ] .
Всего в Microsoft Windows используются следующие типы путей:
- LFS (англ. local file system ) — имена в локальной файловой системе, например: C:FolderFile .
- UNC — сетевые имена, например: ServerSharedFolderFolderFile .
- Long UNC или UNCW — длинные имена, например: ?UNCServerSharedFolderFolderFile или ?C:FolderFile .
Литература [ править | править код ]
Mitch Tulloch, Ingrid Tulloch. Microsoft Encyclopedia of Networking, Second Edition. — ISBN 0-7356-1378-8.
Несмотря на достаточно высокую автоматизацию всех процессов и пользовательских действий, которые предусмотрены в Windows-системах, иногда возникает необходимость ручного задания пути к какому-то объекту, хранящемуся на локальных дисках или на удаленных серверах в Интернете. Ситуаций, когда крайне необходимо вводить такие данные, может быть очень много, но обычно рядовые пользователи ограничиваются простейшими действиями при задании выполнения команд в командной строке, при быстром вызове программных модулей, при проверке расположения объектов на локальных или сетевых ресурсах и т. д. Далее попробуем определиться, как указать путь к файлу или к любому другому объекту, затронув только самые основные аспекты и действия, которые могут понадобиться в повседневной работе, не вникая в нюансы организации сложных структур веб-страниц.
Что такое путь к файлу, каталогу, диску или веб-странице?
Для начала давайте определимся с основным понятием пути файла. Что это такое? Грубо говоря, путь к любому объекту представляет собой полную или сокращенную ссылку на его физическое местоположение на жестком диске или в Интернете (но тоже на жестком диске удаленного сервера или компьютера). В некотором смысле компьютерное указание пути можно сравнить со всем привычным почтовым адресом, где вы проживаете.
Так, например, в адресе указывается страна, город, улица, дом, корпус, квартира и имя жильца. Аналогия здесь такая:
- страна – диск или удаленный сетевой ресурс;
- имя жильца или адресата – название конечного файла;
- все остальное – промежуточные подпапки.
Многие могут заметить, что в почтовом адресе указывается еще и индекс города. Его чисто условно можно соотнести, скажем, с IP-адресом страницы в Интернете или в сетевом окружении, поскольку для локальных ресурсов такие пути практически никогда не используются.
Теперь давайте посмотрим, как указать путь к файлу, исходя из такой аналогии. Для начала рассмотрим локальные ресурсы, то есть носители, подключенные непосредственно к одному компьютеру.
Типы путей
Но тут сразу стоит сделать еще одно небольшое отступление. При указании пути к любому объекту нужно учитывать, что они могут быть либо абсолютными (полными), либо относительными (сокращенными). Полные пути применяются для указания точного местоположения искомого объекта, а относительные предназначены для объектов, которые могут находиться в определенных папках, для которых указывать их расположение изначально не нужно (это чаще всего применяется в веб-программировании при создании ссылок для перехода к документу).
Как записывать путь к файлу в Windows-системах: общие правила
Но это все пока что была теория. Перейдем к практике.
Итак, абсолютный путь всегда должен начинаться с указания литеры (буквы) диска или носителя, после которой ставится двоеточие. После него вписывается обратный слэш (черта с наклоном влево), далее указываются все промежуточные каталоги (опять же через разделитель в виде слэша), а в конце вписывается имя файла с обязательным указанием его расширения.
Запись путей для веб-страниц
Теперь отдельно стоит сказать о том, как указать путь к файлу, находящемуся на удаленном сервере (в Интернете). Понятно, что в этом случае точно определить букву диска вы не сможете. Собственно, это и не нужно.
В качестве абсолютного пути указывается последовательность, в которой первым вписывается название протокола (например, http, https и т. д.). Затем ставится двоеточие, указывается двойной правый слэш. После этого через одинарный правый слэш прописываются все промежуточные страницы (ресурсы). А в конце, как и в прошлом случае, задается название файла с расширением или имя содержащего его каталога (или страницы) для просмотра всех объектов.
Как узнать, где находится файл?
Но очень часто можно встретить ситуации, когда абсолютный путь к нужному объекту вы не знаете, а его срочно нужно определить. Для этого можете воспользоваться «Проводником» и просто задать название файла в специальном поисковом поле или выполнить аналогичный поиск по расширению, вписав его после точки и заключив в звездочки.
В случае с папками в адресной строке путь можно будет скопировать, используя для этого пункт меню ПКМ «Копировать адрес как текст», а затем вставить в нужное место, дописав название файла вручную. Однако можно использовать свойства самого файла, где тоже будет указана директория, в которой он находится.
А вот в случае наличия для файла ярлыка уже в его свойствах следует обратить внимание на поле типа объекта. В котором как раз и будет указан абсолютный путь.
Методы быстрого копирования путей и открытия нужных файлов
Как указать путь к файлу, немного разобрались. Теперь кратко остановимся на некоторых методах, позволяющих ускорить открытие файлов или копирование их адресов (путей).
Например, используя копирование, описанное выше, ссылки на абсолютные пути файлов можно вставлять в командную консоль, но при этом сам путь с обеих сторон должен заключаться в кавычки. Чтобы не заниматься такими вещами, можете просто перетащить нужный объект из «Проводника» в командную строку. Если это исполняемый файл программы, она запустится немедленно. Если же это какой-то документ, он будет автоматически открыт в сопоставленном ему приложении.
Напоследок остается добавить, что очень часто может потребоваться использовать консоль «Выполнить». В качестве простейших команд в ней вводятся именно названия исполняемых компонентов, для которых путь доступа к файлу и расширение запускаемого объекта очень часто указывать не нужно. Почему? Да только потому, что меню «Выполнить» в основном предназначено для вызова исполняемых апплетов (обычно EXE-формата и некоторых других), находящихся по умолчанию либо в директории System32, либо в каталоге Windows.
Например, для запуска редактора реестра достаточно вписать только имя файла regedit, для старта стандартного «Блокнота» — notepad, для командной строки — cmd и т. д. В принципе, если выполнить некоторые нехитрые настройки, для такого типа быстрого запуска можно указать любое приложение или какой-то документ, но это уже отдельная тема для разговора.
В этой статье будет рассмотрен ряд методов, которые можно использовать для того, чтобы скопировать полный путь к файлу или папке в Проводнике Windows 10. Невзирая на то, что это тривиальная задача, существует несколько интересных вариантов, которые вы обязательно найдете для себя полезными.
Файловый проводник в операционной системе — это приложение для управления файлами, которое поставляется в комплекте с ОС, начиная с Windows 95. Кроме операций по управлению объектами, в интерфейсе реализована поддержка панелей быстрого доступа, рабочего стола, сети и других полезнейших функций.
Иногда, а в некоторых случаях и на постоянной основе, пользователям необходимо копировать полный путь к папке или файлу. Возможно для загрузки документа в Интернет или добавления в продолжение к какой-либо команде в Командной строке и т.п.
Удобно будет это сделать, когда он уже скопирован в буфер обмена. Тогда его можно получить одним нажатием кнопки мыши или определенным сочетанием клавиш.
В ОС Windows 10 есть несколько способов копирования полного пути к объектам в Проводнике. Давайте их рассмотрим.
Полный путь к файлу
1-й метод. Найдите целевой файл и отметьте его. На вкладке “Главная” Панели инструментов найдите кнопку “Скопировать путь” и нажмите её. Дальше вставьте содержимое из буфера обмена в любое место. Оно будет оформлено двойными кавычками.
2-й метод. В адресной строке кликните правой кнопкой мыши. В контекстном меню выберите кнопку копирования адреса как текста. Это работает только для папок. Кавычки не применяются.
Первый же пункт меню “Копировать адрес” отправляет в буфер обмена сам объект, который можно будет вставить в другое место на диске.
3-й метод. Просто нажмите левой кнопкой мыши на область адресной строки. Выделенное содержимое станет доступно для редактирования с помощью пунктов контекстного меню.
4-й метод. Для меня самый эффективный и простой. Зажмите клавишу Shift и, удерживая её, щелкните правой кнопкой мыши на нужном файле. Найдите пункт “Копировать как путь” и нажмите на него. В результате вставки также будут присутствовать кавычки.
Командная строка
5-й метод. Быстро вставить полный путь к файлу в Командную строку можно простым перетаскиванием объекта. Расположите рядом окно файлового Проводника и окно интерпретатора команд, зацепите курсором мыши файл в первом и перетащите его во второе.
Вот и всё! Какие дополнительные методы известны вам? Спасибо за внимание!
Источник: hololenses.ru
Как правильно указать локальный путь?
Есть программа, в которой проигрывается музыка. При передачи архива на другой компьютер, я не знаю где будет находится его папка со звуковыми файлами. Какой путь стоит указывать, папка , в которой хранится музыка, называется music
Отслеживать
задан 20 окт 2016 в 16:41
ZOOM SMASH ZOOM SMASH
1,372 2 2 золотых знака 16 16 серебряных знаков 36 36 бронзовых знаков
Можно указать относительный путь (относительно самого *.exe ).
20 окт 2016 в 16:54
По хорошему нужно вывести пользователю диалог выбора пути до папки.
20 окт 2016 в 18:04
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
У вас есть 4 варианта действий, ну или произвольная их комбинация, по вкусу и потребностям.
1. Предоставить выбор пользователю
В этом случае просто открываете FolderBrowserDialog и получаете путь к папке через свойство FolderBrowserDialog.SelectedPath. Это удобно, если требуется частая смена пути к файлам по желанию пользователя.
2. Указать пути к файлам в конфигурации
Явно прописываете путь в AppСonfig, через стандартный механизм Settings, таким образом можно будет указать путь к папке перед запуском программы в конфигурационном файле приложения. Это удобно, если не требуется часто менять пути к файлам.
3. Указать путь относительно рабочего каталога
Этот и следующий варианты похожи, но не одинаковы. Рабочим каталогом, по умолчанию считается текущий каталог командной строки, или любой оболочки над командной строкой, вроде FAR или TotalComander. Это значит, что он вовсе не обязан совпадать с каталогом, в котором находится исполняемый файл. Получить путь к рабочему каталогу можно так: Environment.CurrentDirectory или так: Directory.GetCurrentDirectory(), тогда путь к вашей папке может быть задан так:
Этот вариант хорош тем, что позволяет программе работать именно в том каталоге, в котором она была вызвана.
Важное замечание, запуск из командной строки и запуск при помощи ярлыка работают по разному. В свойствах ярлыка, рабочий каталог может быть задан явно, в противном случае, рабочим каталогом считается каталог исполняемого файла.
4. Указать путь относительно исполняемого файла
Можно принудительно заставить всегда использовать каталог исполняемого файла, но для этого его нужно получить. Тут тоже есть несколько вариантов. Для WinForms этот каталог можно получить с помощью Application.ExecutablePath. Более универсальный вариант AppDomain.CurrentDomain.BaseDirectory, в этом случае вы всегда получите путь к каталогу в котором лежат сборки вашей программы. Результат будет выглядеть так:
//этот путь содержит завершающий разделитель, поэтому просто добавляем имя папки string musicPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, «music»); //можно так string musicPath = Path.Combine(new FileInfo(Process.GetCurrentProcess().MainModule.FileName) .DirectoryName, «music»); //или для WinForms так string musicPath = Path.Combine(new FileInfo(Application.ExecutablePath) .DirectoryName, «music»);
Этот вариант стоит выбрать, если программа должна работать с файлами строго в своих директориях, например по соображениям безопасности, или еще каким системным ограничениям.
5 Истина где-то рядом
На самом деле ни одна из программ не использует только один из этих вариантов. Обычно используется некоторая комбинация приведенных вариантов, с указанием порядка поиска файлов по всем возможным расположениям, с выдачей ошибки или диалога для явного указания размещения, если файлы не удалось обнаружить ни в одном известном месте.
Ну и небольшое дополнение, которое не относится к вашему вопросу, но относится к теме в целом. Кроме перечисленных вариантов, есть еще стандартные служебные папки вроде %ProgramData%, %AppData%, %Temp% и другие, которые предназначены специально для размещения рабочих и временных файлов, конфигураций и прочих служебных и пользовательских данных, использованием которых пренебрегать не стоит, если не хотите писать для пользователя подробную инструкцию какие папки он должен создать и какие права на них выдать, а ведь пользователь может и не быть администратором компьютера, и просто не иметь прав на все эти манипуляции, да кто их читает эти инструкции .
Источник: ru.stackoverflow.com
Странный мир путей файлов в Windows
Пути файловых систем в Windows страннее, чем можно подумать. В любой производной от Unix системе пути на удивление просты: если нечто начинается с / , то это путь. Но всё совершенно иначе в Windows, которая имеет озадачивающее разнообразие схем составления пути.
Когда я реализовал функцию автозавершения пути в Fileside 1.7, мне нужно было изучить этот вопрос внимательнее, чтобы ничего не упустить. В этой статье я расскажу о своих находках.
Стоит заметить, что статья ограничивается только тем типом путей, который видит пользователь приложений Windows (обусловленный Win32 API). Под этим слоем есть ещё больше любопытного, в основном касающегося тех, кто пишет драйверы оборудования и тому подобное.
Вкратце
Форматы абсолютных путей
Путь к диску | C:Program FilesHAL 9000 |
UNC-путь | \MediaPicturesWorth1000 words |
Путь к устройству (литеральный) | \?D:PlansMarshall |
Путь к устройству (нормализованный) | \.D:ProjectsHuman Genome |
Форматы относительных путей
Относительный к текущей папке | .Manhattan , ..Plans |
Относительный к текущему диску | Pacts |
Относительный к текущей папке диска | D:Warsaw |
Запрещённые символы
< >” / |? * | Никогда не допускаются |
. | Не допускается в качестве последнего символа |
: | Не допускается, за исключением потоков данных |
Ограничения длины
Путь | 32767 (или 260) символов |
Имя файла или папки | 255 символов |
Схемы путей Windows
В Windows существует три разных вида абсолютного пути и три разных типа относительного пути.
Абсолютные пути
Абсолютные, или полные пути — это завершённые пути, сами по себе уникальным образом идентифицирующие местоположение в файловой системе.
Пути к диску
Пути к диску — это старые добрые пути, которые мы знаем и любим, они состоят из буквы диска и последовательности папок.
D:Doughnut preferencesWith jam in
UNC-пути
UNC расшифровывается как Universal Naming Convention, это описание файлов, начинающееся с \ , часто используемое для ссылок на сетевые накопители. Первый сегмент после \ — это хост, который может быть или сервером с именем, или IP-адресом:
\WorkHard \192.168.1.15Hard
UNC-пути также можно использовать для доступа к локальным дискам:
\localhostC$UsersAndrew Fletcher \127.0.0.1C$UsersAlan Wilder
Или с использованием имени компьютера:
\PipelineC$UsersMartin Gore
Символ $ в C$ обозначает скрытую административную общую папку; он не заменяет двоеточие рядом с именем диска : . Общие диски в стиле C$ — это просто удобные ярлыки, автоматически создаваемые Windows. Доступ к дискам через них возможен, только если вы вошли как администратор.
Стоит также заметить, что \Pipeline сам по себе не валидный путь к папке, он идентифицирует только сервер. Чтобы попасть в папку, нужно добавить имя общей папки.
Пути к устройству
Путь к устройству начинается с одного из следующих фрагментов:
- \?
- \.
Синтаксис доступа к локальной папке выглядит как один из этих вариантов:
\?Z:AnimalsCute \.Z:AnimalsCunning
Если вам нужно ещё больше загадочности, то можно также подставить эквивалентный Z: идентификатор устройства:
\?VolumeAnimalsCryptic
Здесь Volume — это идентификатор дискового тома, на котором находится Z: в компьютере.
Также существует специальный синтаксис для описания UNC-путей как путей к устройству:
\?UNClocalhostZ$AnimalsCurious
В путях к устройству часть, идущая после \? или \. — это имя, определённое во внутреннем пространстве имён Object Manager Windows. Те, кому любопытно исследовать это пространство имён, могут скачать инструмент WinObj и посмотреть.
Нормализованные и литеральные пути к устройству
Так в чём же разница между \? и \. ?
В обычном случае, когда вы передаёте путь операционной системе Windows, она очищает его, прежде чем использовать. Этот процесс называется нормализацией, подробнее о нём мы поговорим ниже.
Путь \? пропускает этот этап очистки, а \. не пропускает. Поэтому можно назвать пути \? литеральными путями к устройству, а \. — нормализованными путями к устройству.
Допустим, по какой-то непонятной причине, у вас есть файл с именем .. (например, он мог быть создан на сетевом диске в другой системе). В обычном случае вы бы не смогли получить доступ к нему, потому что нормализация резолвит его в родительскую папку, но благодаря литеральному пути к устройству это можно сделать.
Относительные пути
Относительные пути — это неполные пути, которые для уникальной идентификации местоположения необходимо скомбинировать с другим путём.
Пути, относительные к текущей папке
Эти пути используют в качестве начальной точки текущую папку, например, .Torquay относится к подпапке текущей папки, а ..Wales относится к подпапке родителя текущей папки.
Папки, относительные к корню текущего диска
Если начать путь с одной , то путь интерпретируется как относительный к корню текущего диска. Поэтому если вы находитесь в любом месте диска E: и введёте Africa , то окажетесь в E:Africa .
Когда доступ к текущей папке выполняется через UNC-путь, то путь, относительный к текущему диску, интерпретируется относительно к общей корневой папке, допустим \EarthAsia .
Пути, относительные к текущей папке диска
Эти более редко используемые пути указывают диск без обратной косой черты, например E:Kreuzberg , и интерпретируются относительно к текущей папке этого накопителя. На самом деле это имеет смысл только в контексте оболочки командной строки, отслеживающей текущую рабочую папку для каждого диска.
Это единственный тип путей, не поддерживаемый Fileside, потому что в нём нет понятия текущей папки каждого диска. Текущую папку имеют только панели.
Нормализация
Как говорилось ранее, все пути, за исключением литеральных путей к устройству, перед использованием проходят процесс нормализации. Этот процесс состоит из следующих этапов:
- Замена косых черт ( / ) на обратные косые черты ( )
- Сворачивание повторяющихся разделителей в виде обратных косых черт в один
- Резолвинг относительных путей заменой всех . или ..
- Отсечение завершающих пробелов и точек
Правила именования в Windows
Теперь рассмотрим отдельные элементы, из которых состоит путь. Существует множество ограничений имён, которые можно использовать для файлов и папок.
Запрещённые символы
В имени нельзя использовать следующие символы:
Также исключаются любые непечатаемые символы со значением ASCII меньше 32.
Хитрое двоеточие
В большинстве случаев : также запрещено.
Однако существует экзотическое исключение в виде изменённых потоков данных NTFS, в которых двоеточие используется в качестве разделителя внутри имени. Малоизвестно, что в некоторых контекстах можно хранить внутри файла скрытый фрагмент данных, добавляя к его имени суффикс, которому предшествует двоеточие.
Опасная точка
Символ . допустим внутри или в начале имени, но запрещён в конце.
Начинающие и завершающие пробелы
Любопытно, что Windows допускает пробелы в начале, но не в конце имён. Так как имя с пробелами в начале и конце часто выглядит похожим на имя без пробелов, обычно это ужасная идея, и при переименовании или создании файлов Fileside автоматически удаляет их.
Запрещённые имена
По историческим причинам нельзя использовать следующие имена:
CON , PRN , AUX , NUL , COM0 , COM1 , COM2 , COM3 , COM4 , COM5 , COM6 , COM7 , COM8 , COM9 , LPT0 , LPT1 , LPT2 , LPT3 , LPT4 , LPT5 , LPT6 , LPT7 , LPT8 и LPT9 .
Это включает и имена с расширениями. Например, если вы назовёте файл COM1.txt , то внутри он преобразуется в \.COM1 и интерпретируется самой Windows как устройство. А это не то, что нам нужно.
Чувствительность к регистру
В большинстве случаев Windows не делает различий между символами в верхнем и нижнем регистре в путях.
C:Polish hamlet , c:polish Hamlet , C:Polish Hamlet и C:POliSh hAMlET считаются абсолютно одинаковыми.
Однако с обновления Windows 10 за апрель 2018 года файловые системы NTFS имеют опцию включения чувствительности к регистру на уровне папок.