Me pregunto si existe una forma universal de resolver una ruta usando una letra de unidad (como X:\foo\bar.txt
) en su ruta UNC equivalente, que podría ser una de las siguientes:Resolver letra de unidad de Windows a una ruta (subst y red)
X:\foo\bar.txt
siX:
es una unidad real (es decir, disco duro, memoria USB, etc.)\\server\share\foo\bar.txt
siX:
es una unidad de red montada en\\server\share
C:\xyz\foo\bar.txt
X:
si es el resultado de unSUBST
comando de asignación deX:
aC:\xyz
Sé que hay soluciones parciales que serán:
resolver una unidad de red (véase, por ejemplo question 556649 que se basa en
WNetGetUniversalName
)resolver el
SUBST
letra de unidad (consulteQueryDosDevice
que funciona como se esperaba, pero no devuelve las rutas de acceso UNC para elementos tales como unidades locales o unidades de red).
¿Falta alguna forma directa de implementar esta resolución de letra de unidad en Win32? ¿O realmente tengo que meterme tanto con WNetGetUniversalName
como con QueryDosDevice
para obtener lo que necesito?
ah, sí, yendo en la dirección CMD es una solución que inicialmente rechazada. Realmente estaba tratando de encontrar una API Win32 que hiciera el truco. Obviamente, su solución debería funcionar para las personas que intentan hacer lo mismo en un entorno de proceso por lotes/secuencias de comandos. Muchas gracias por tus ideas; fue la ocasión para que (re) descubriera algunos trucos de CMD. –
Este script es increíble. Solo un error: no admite espacios en la ruta de disco sustituida. Para solucionarlo, cambie el primer ciclo de: ... tokens = 1,2 ... a ... tokens = 1 * ... –
@MrBungle: ¡Gracias! No sabía sobre 'tokens = 1 *', investigaré. ¿Estás seguro de que no es '1,2 *'? – Benoit