Сокращение для моих документов в Windows 7

708
Simon

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

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

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

2

2 ответа на вопрос

3
Appleoddity

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% по той же причине, по которой вы не можете использовать длинные имена файлов. Программа просто не понимает переменные среды. И это тоже не использует сокращенную версию.

Он заявил, что ему уже не удалось найти его с помощью «dir / x», я думаю, что он ищет не в том месте. HackSlash 6 лет назад 0
Это просто глупо. Если принятый ответ работает, то работает `dir / x`. ОП явно не сделал это правильно. Twisty Impersonator 6 лет назад 1
Потому что ему нужно знать, откуда запустить «dir / x». Я сказал ему, откуда. Если бы у него было длинное имя пользователя, ему пришлось бы запустить «dir / x» из каталога users, а затем CD к этому имени пользователя 8.3 и запустить его снова. В этом случае было бы быстрее просто набрать его от руки, потому что я вижу правильное имя 8.3, используя метод, который я описал в своем ответе. HackSlash 6 лет назад 0
Оба хороших ответа. Проверка реестра была важной деталью, предоставленной HackSlash. Simon 6 лет назад 0
0
HackSlash

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

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

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 
`dir / x` более надежен. Предположим, что одна создает три папки, `LongFolder1`,` LongFolder2` и `LongFolder3`, затем удаляет первую и создает` LongFolder4`. Зачем угадывать, какое имя использовать, когда есть `dir / x`? В противном случае, хороший ответ, так как в этом простом случае этот ответ помог ОП. Twisty Impersonator 6 лет назад 0
Хорошо, я добавил примечание, что вы можете использовать «dir / x», чтобы найти имя, а не угадывать. Я всегда догадываюсь и никогда не было проблем. HackSlash 6 лет назад 0

Похожие вопросы