Mi chiedo se esiste un modo universale per risolvere un percorso utilizzando una lettera di unità (come X:\foo\bar.txt
) nel suo percorso UNC equivalente, che potrebbe essere uno dei seguenti:Risolvere la lettera di unità di Windows in un percorso (subst e rete)
X:\foo\bar.txt
seX:
è un'unità reale (cioè hard disk, chiavetta USB, ecc)\\server\share\foo\bar.txt
seX:
è un'unità di rete montata su\\server\share
C:\xyz\foo\bar.txt
seX:
è il risultato di unSUBST
comando di mappaturaX:
aC:\xyz
So che ci sono soluzioni parziali che sarà:
risolvere un'unità di rete (si veda ad esempio question 556649 che si basa su
WNetGetUniversalName
)Risolvere il
SUBST
lettera di unità (vedereQueryDosDevice
che funziona come previsto, ma non restituisce percorsi UNC per elementi quali unità locali o unità di rete).
Mi manca un modo semplice per implementare questa risoluzione di lettera di unità in Win32? O devo davvero pasticciare sia con lo WNetGetUniversalName
sia con lo QueryDosDevice
per ottenere ciò di cui ho bisogno?
ah, sì, andando nella direzione CMD è una soluzione ho rifiutato inizialmente. Stavo davvero cercando di trovare una API Win32 che avrebbe fatto il trucco. Ovviamente, la soluzione dovrebbe funzionare per le persone che cercano di fare la stessa cosa in un ambiente batch/scripting. Grazie mille per le tue idee; è stata l'occasione per me di (ri) scoprire alcuni trucchi CMD. –
Questo script è fantastico. Un solo errore: non supporta gli spazi nel percorso di unità sostituito. Per risolvere il problema, modifica il primo ciclo for da: ... token = 1,2 ... a ... token = 1 * ... –
@MrBungle: Grazie! Non sapevo che 'token = 1 *', indagheremo. Sei sicuro che non sia '1,2 *'? – Benoit