Tengo un programa que necesita acceder a un compilador de C++ que instalé en la carpeta Mis documentos; digamos d:\Mis documentos.
El programa no puede manejar un espacio en la ruta y la ruta ya está entre comillas dobles. Intenté averiguar el nombre corto usando dir /x
y for %I in (.) do echo %~sI
. Esto simplemente devuelve el nombre completo de Mis documentos. También lo intenté %userprofile%\documents
pero el programa no lo reconoce.
¿Por qué no puedo obtener el nombre corto de esta carpeta usando este comando? ¿Existe otra forma de obtener el nombre corto o un posible truncamiento?
Respuesta1
Es posible que estés viendo un enlace o un acceso directo.
La ubicación predeterminada de "Mis documentos" es:
C:\Users\%USERNAME%\Documents
Entonces, si su %USERNAME% es "minombre", haría referencia a:
C:\Users\myname\Documents
Parece que está utilizando un antiguo programa de Command.com que necesita nombres de archivos de DOS 8.3. En este caso, tomaría los primeros seis caracteres y agregaría "~1" para el primer elemento. Si tuviera dos elementos que compartieran los mismos primeros seis caracteres, el siguiente terminaría en "~2" y así sucesivamente. Para estar seguro, puede ejecutar "dir /x" para ver qué nombres cortos se han asignado a cada carpeta.
En mi ejemplo final, mostraré cómo se vería un nombre de usuario largo en este formato. El nombre de usuario de ejemplo será "nombredeusuariolargo".
C:\Users\LONGUS~1\DOCUME~1
Sigue este patrón con tu propio nombre de usuario.
Si "Mis documentos" no está en la ubicación predeterminada o desea encontrar la ubicación dinámicamente, deberá verificar la siguiente ubicación del registro:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Respuesta2
dir /x
mostrará el nombre de archivo corto para archivos y carpetas, si existe. Existirá uno si el nombre largo es mayor que el formato de 8,3 caracteres.
Por ejemplo, aquí hay un ejemplo de uso dir /x
en mi carpeta de perfil de usuario:
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 el nombre corto se muestra junto al nombre largo.
Tenga en cuenta también que el estándar para acortar el nombre es eliminar espacios, acortar el nombre a 6 caracteres y agregar ~1, poner en mayúscula todas las letras y agregar los primeros 3 caracteres de la extensión del archivo. Si hay un conflicto, se agregará ~2 en su lugar, y así sucesivamente.
Si asumimos que su carpeta de documentos está guardada en D:\My Documents
y que no hay otros nombres en conflicto, entonces el nombre corto será D:\MYDOCU~1
.
Probablemente no puedas usar %userprofile% por la misma razón que no puedes usar nombres de archivos largos. El programa simplemente no comprende las variables de entorno. Y tampoco utiliza la versión de nombre corto.