2

У меня есть программа для доступа к компилятору c++, который я установил в папку «Мои документы» - скажем, d:\ Мои документы

Программа не может обработать пробел в пути, и путь уже указан в двойных кавычках. Я попытался найти короткое имя, используя dir /x и for %I in (.) do echo %~sI . Это просто возвращает полное имя моих документов. Я также пробовал %userprofile%\documents но программа не распознает это.

Почему я не могу получить краткое имя этой папки с помощью этой команды? Есть ли другой способ получить короткое имя или вероятное усечение?

2 ответа2

3

dir /x отобразит краткое имя файла и папки, если таковые существуют. Один будет существовать, если длинное имя будет больше 8,3 символов.

Например, вот пример использования dir /x в папке моего профиля пользователя:

01/02/2018  05:35 PM    <DIR>                       .
01/02/2018  05:35 PM    <DIR>                       ..
10/16/2017  09:41 AM    <DIR>          ASDM~1       .asdm
11/01/2017  01:01 PM    <DIR>          GIMP-2~1.8   .gimp-2.8
11/20/2017  05:26 PM    <DIR>          NETWOR~1     .networkassistant
12/15/2016  09:54 AM    <DIR>          THUMBN~1     .thumbnails
11/16/2017  09:48 PM    <DIR>                       Contacts
07/17/2017  02:23 PM    <DIR>          DOCUME~1     Documents
01/03/2018  01:07 PM    <DIR>          DOWNLO~1     Downloads
03/14/2017  02:43 PM    <DIR>                       GNS3
12/19/2017  01:10 PM    <DIR>          GOOGLE~1     Google Drive
11/16/2017  09:48 PM    <DIR>                       Links
06/22/2017  07:20 AM    <DIR>                       OneDrive

Обратите внимание, что короткое имя отображается рядом с длинным именем.

Также обратите внимание, что стандартом для сокращения имени является удаление пробелов, сокращение имени до 6 символов и добавление ~ 1, использование заглавных букв всех букв, добавление первых 3 символов расширения файла. Если есть конфликт, вместо него будет добавлено ~ 2, и так далее.

Если мы предположим, что папка с вашими документами сохранена в папке D:\My Documents и других конфликтующих имен нет, тогда короткое имя будет D:\MYDOCU~1 .

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

0

Возможно, вы просматриваете ссылку или ярлык.

Расположение по умолчанию "Мои документы":

C:\Users\%USERNAME%\Documents

Так что, если ваш% USERNAME% - "мое имя", вы бы указали:

C:\Users\myname\Documents

Похоже, вы используете старую программу command.com, которой нужны имена файлов для DOS 8.3. В этом случае вы должны взять первые шесть символов и добавить «~ 1» для первого элемента. Если у вас есть два элемента с одинаковыми первыми шестью символами, то следующий будет заканчиваться на «~ 2» и так далее. Чтобы быть уверенным, вы можете запустить «dir /x», чтобы увидеть, какие короткие имена были назначены для каждой папки.

В моем последнем примере я покажу, как будет выглядеть длинное имя пользователя в этом формате. Примером имени пользователя будет "longusername".

C:\Users\LONGUS~1\DOCUME~1

Следуйте этой схеме с вашим собственным именем пользователя.

Если ваши "Мои документы" не находятся в расположении по умолчанию или вы хотите динамически найти их, вы должны проверить следующее расположение реестра:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .