Eu tenho um programa que precisa acessar um compilador c++ que instalei na pasta Meus Documentos - digamos d:\Meus Documentos
O programa não consegue lidar com um espaço no caminho e o caminho já está entre aspas duplas. Eu tentei descobrir o nome abreviado usando dir /x
e for %I in (.) do echo %~sI
. Isso apenas retorna o nome completo de Meus Documentos. Eu também tentei %userprofile%\documents
, mas o programa não reconhece isso.
Por que não consigo obter o nome abreviado desta pasta usando este comando? Existe outra maneira de obter o nome abreviado ou um provável truncamento?
Responder1
Você pode estar olhando para um link ou atalho.
O local padrão de "Meus Documentos" é:
C:\Users\%USERNAME%\Documents
Então, se seu %USERNAME% for "meunome", você faria referência a:
C:\Users\myname\Documents
Parece que você está usando um programa antigo do command.com que precisa de nomes de arquivos do DOS 8.3. Neste caso você pegaria os primeiros seis caracteres e adicionaria "~1" para o primeiro item. Se você tivesse dois itens que compartilhassem os mesmos seis primeiros caracteres, o próximo terminaria em "~2" e assim por diante. Para ter certeza, você pode executar "dir /x" para ver quais nomes curtos foram atribuídos a cada pasta.
No meu exemplo final, mostrarei como seria um nome de usuário longo neste formato. O nome de usuário de exemplo será "longusername".
C:\Users\LONGUS~1\DOCUME~1
Siga este padrão com seu próprio nome de usuário.
Se os seus "Meus Documentos" não estiverem no local padrão ou você quiser encontrar o local dinamicamente, verifique o seguinte local do registro:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Responder2
dir /x
exibirá o nome abreviado de arquivos e pastas, se existir. Existirá um, se o nome longo for maior que o formato de 8,3 caracteres.
Por exemplo, aqui está um exemplo de uso dir /x
na minha pasta de perfil de usuário:
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
Observe que o nome abreviado é mostrado ao lado do nome longo.
Observe também que o padrão para encurtar o nome é remover espaços, encurtar o nome para 6 caracteres e adicionar ~1, colocar todas as letras em maiúscula, adicionar os 3 primeiros caracteres da extensão do arquivo. Se houver um conflito, um ~2 será adicionado e assim por diante.
Se assumirmos que sua pasta de documentos está salva em D:\My Documents
e que não há outros nomes conflitantes, o nome abreviado será D:\MYDOCU~1
.
Você provavelmente não pode usar% userprofile% pelo mesmo motivo que não pode usar nomes de arquivos longos. O programa simplesmente não entende variáveis de ambiente. E também não está usando a versão abreviada.