Unità virtuali, Subst e Visual Subst
> Scritto da Samuel Zilli il giorno 20/07/2007
 1 - Introduzione

  Non tutti sanno che Windows XP e Windows 2000 hanno la possibilità di definire delle unità virtuali (virtual drives).
Si tratta di una possibilità che può risultare interessante a diversi utenti, nonché risolvere qualche problema con alcuni software.

Brevemente, si tratta di creare una lettera di unità in Windows (una unità virtuale, che non esiste nella realtà, ma che Windows crederà reale) che “punta” ad un percorso a nostra scelta. Tutto ciò per rendere più agevole l'uso di files richiesti spesso ma dislocati in percorsi complessi.

Vedremo prima un po' di teoria per cercare di capire cosa sono le unità virtuali (virtual drive), quindi impareremo ad usare il comando Subst incluso in Windows.
Infine vedremo Visual Subst, un semplice tool grafico gratuito che rende più intuitivo l'uso di questa funzione.

 2 - Teoria: le unità virtuali

  In pratica, quando usiamo i files contenuti in una cartella del nostro disco fisso (o di un disco esterno o di rete) che abbia un percorso piuttosto complesso, possiamo “creare” una nuova lettera di unità che “punti” direttamente a tale percorso.
Così, quando vogliamo accedere a quella specifica cartella, anziché digitare un lunghissimo percorso o cliccare in varie sottocartelle per arrivarci, ci basterà aprire Esplora Risorse (o Risorse del Computer) e fare un doppio click sulla nuova unità appena creata, per venire automaticamente “redirezionati” nella cartella desiderata.

Facciamo un esempio pratico.
Immaginiamo che nelle prossime settimane dovremo lavorare spesso con files e documenti che sono salvati nella seguente cartella del nostro disco fisso:
C:\Progetti\Mario\Cliente_Alfa\Lavoro_Beta\Presentazione\Versione2\
Ogni volta che dobbiamo recuperare un file, copiarlo o aprirlo dall'interno di un'applicazione, dovremmo addentrarci nei meandri delle varie sottocartelle.
Come vedremo, invece, possiamo semplicemente creare un'unità virtuale, assegnandole nel nostro esempio la lettera P: (supponendo che non sia già utilizzata da qualche periferica o collegamento), e collegarla al nostro percorso completo.
Quando dovremo ad esempio importare un'immagine in un programma, ci basterà digitare P:\foto5.jpg oppure basterà cliccare sull'unità P: per ritrovare subito i files desiderati.

Si tenga presente che la nuova unità è solo un redirezionamento, non è una unità reale con files reali, perciò tutte le operazioni e le modifiche sui files che faremo interesseranno i files contenuti nella cartella originaria (C:\Progetti\Mario\Cliente_Alfa\Lavoro_Beta\Presentazione\Versione2\ nel nostro esempio).

L'uso dei drive virtuali potrebbe tornare utile anche con alcuni software e giochi che richiedono che il proprio CD resti sempre inserito nel lettore per avviarsi: copiandone il contenuto in una cartella e facendola apparire come un'unità, a volte è possibile superare tale controllo ed evitare di avere sempre il lettore CD impegnato (il “trucco” non funziona con tutti i programmi, e non va usato con software di cui non si possiede il disco originale).

 3 - Teoria: sostituire le unità di rete

  Un altro utilizzo interessante può essere quello di sostituire temporaneamente dei collegamenti di rete non disponibili.

Anche qui, facciamo un esempio pratico.
Immaginiamo di avere un notebook che normalmente usiamo in ufficio, restando collegati alla rete aziendale (o casalinga). Sul notebook sono installati alcuni software che per il loro funzionamento richiedono dei files di impostazione, delle librerie e dei documenti che sono ubicati nel server aziendale. Sul nostro notebook sono state configurate delle unità di rete (Risorse del Computer, menù Strumenti->Connetti unità di rete) che puntano a tali percorsi di rete per rendere disponibili i files necessari.
Quando il notebook non è collegato alla rete aziendale (ad esempio perchè dobbiamo lavorare da casa o da un cliente), però, ci accorgiamo che i software presentano dei malfunzionamenti o dei forti rallentamenti, perchè non possono trovare i files necessari che sono sul server aziendale.

Una prima soluzione che può venire in mente è quella di copiare i files necessari dal server al disco fisso del notebook prima di scollegarlo dalla rete aziendale. Però poi dovremmo cambiare tutte le configurazioni dei nostri software affinchè cerchino i files necessari in una cartella del disco fisso anziché nel percorso di rete che punta al server. E appena torniamo in ufficio, dovremmo nuovamente cambiare le configurazioni per tornare alla situazione di partenza.
Decisamente complesso e a rischio di errori di configurazione.

Anche in questo caso ci vengono in soccorso le unità virtuali: possiamo definire temporaneamente un'unità virtuale che “sostituisca” il precedente percorso di rete e punti invece alla cartella del disco fisso dove, prima di scollegare il notebook dalla rete, abbiamo copiato dal server i files necessari. I software del notebook crederanno quindi che il collegamento di rete sia ancora attivo e saranno in grado di trovare automaticamente tutti i files necessari.
Una volta tornati in ufficio e ricollegato il portatile alla rete aziendale, basterà disattivare le unità virtuali e tornerà tutto alla situazione iniziale. Come vedremo in seguito, queste operazioni, una volta definite inizialmente, si potranno eseguire in maniera semplicissima, veloce e “quasi” automatica.

L'unica accortezza è quella di impostare le cartelle copiate sul disco fisso e il percorso delle unità virtuali da creare in modo che i files necessari siano recuperabili con lo stesso percorso originario.

Per essere più chiari, supponiamo che la situazione attuale sia la seguente.
Il server contiene all'interno dei suoi dischi fissi le seguenti cartelle che sono necessarie ai nostri software:
C:\Programma1\Impostazioni\
C:\Programma1\Librerie\
D:\Documenti\Mario\
Nel nostro notebook ci sono due unità di rete, X: e Z:, impostate per “puntare” al server come segue:
X: -> \server\C\Programma1\
Z: -> \server\D\
Quindi, il software installato nel notebook è configurato per trovare i files a lui necessari tramite i seguenti percorsi:
X:\Impostazioni\
X:\Librerie\
Z:\Documenti\Mario\

Quello che faremo per prima cosa è creare nel notebook una cartella C:\UnitaVirtuale\ e copiarci dentro le tre cartelle necessarie presenti sul server, in modo da avere sul disco fisso del notebook questa struttura:
C:\UnitaVirtuale\Impostazioni\
C:\UnitaVirtuale\Librerie\
C:\UnitaVirtuale\Documenti\Mario\
Ora che abbiamo “in locale” tutti i files che servono ai nostri programmi, dobbiamo definire le unità virtuali in modo da modificare temporaneamente i percorsi delle unità X: e Z: affichè “puntino” alle cartelle locali appena create, ma rispettando la somiglianza con i percorsi originari.
Definiremo quindi tramite il comando Subst (con le modalità che vedremo poi) le seguenti unità virtuali, con i relativi percorsi:
X: -> C:\UnitaVirtuale
Z: -> C:\UnitaVirtuale
Ora il software accederà ai files ancora usando i suoi link già configurati, ma adesso verrà “ingannato” dai redirezionamenti dei drive virtuali e crederà di usare i files di rete del server (che invece ora non è collegato) ma in realtà starà usando i files che abbiamo copiato in locale.
Così, in maniera completamente trasparente per il software, i files necessari saranno disponibili (senza dover cambiare le impostazioni dei programmi) anche quando non siamo collegati in rete, e spariranno così i malfunzionamenti relativi alla loro mancanza.

Nota 1: quando ci collegeremo nuovamente alla rete aziendale, basterà disabilitare l'unità virtuale perchè il notebook torni automaticamente ed istantaneamente ad “usare” i files sul server. Se però abbiamo modificato i files contenuti nelle cartelle che avevamo copiato sul disco fisso locale, e dobbiamo mantenere tali modifiche, dobbiamo ricordarci di ricopiare tali cartelle nel server!

Nota 2: quando tramite il comando Subst redirezioniamo il percorso di un'unità di rete già presente con un'unità virtuale che usa la stessa lettera di unità, il percorso precedente viene “sovrascritto” temporaneamente dal nuovo percorso. Appena disabiliteremo tale unità virtuale, la lettera associata all'unità di rete tornerà automaticamente e istantaneamente ad essere associata al percorso di rete originario (pertanto non sarà assolutamente necessario ricrearla).

 4 - Pratica: il comando Subst

  Eccoci arrivati al dunque. Abbiamo visto cosa sono le unità virtuali e cosa si può fare con esse.
Ma come si usano? Che applicativi ci servono?

In realtà, i recenti sistemi operativi Windows (2000, XP, Vista), hanno già al loro interno tutto quello che ci serve: la libreria API con le funzioni necessarie, il comando Subst e i files batch (.BAT o .CMD) con cui preparare le impostazioni desiderate.

Vediamo allora come usarli.

Innanzitutto, Subst va usato da riga di comando, quindi lo si lancia da una console (la vecchia “finestra DOS”, Start->Programmi->Accessori->Prompt dei comandi) oppure da Start->Esegui.

La sintassi del comando Subst è decisamente semplice.

Se lanciamo il comando senza parametri:
subst
ci verrà mostrata una lista delle unità virtuali già attive (se ce ne sono), complete di lettera di unità e percorso assegnato. Questo è molto utile durante le nostre prove, dopo aver creato delle unità virtuali per verificare che siano state create, e dopo aver disabilitato delle unità virtuali per verificare che non siano più assegnate.


La sintassi per creare una nuova unità virtuale prevede di indicare il comando Subst seguito dalla lettera dell'unità da creare (con i due punti) e poi dal percorso da assegnare a tale unità (racchiuso tra apici, altrimenti nel caso di percorsi con spazi si riceverà l'errore “Numero di parametri non corretto”). Per creare l'unità virtuale descritta nel primo esempio, digiteremo il comando seguente:
subst P: “C:\Progetti\Mario\Cliente_Alfa\Lavoro_Beta\Presentazione\Versione2”


mentre per creare le due unità del secondo esempio digiteremo questi due comandi:
subst X: “C:\UnitaVirtuale”
subst Z: “C:\UnitaVirtuale”
Nota: indicare il percorso senza mettere la barra alla fine!


Dopo aver creato una o più unità virtuali, queste verranno indicate da Risorse del Computer come se fossero dei dischi fissi locali (nella figura seguente, le unità Q: e Y: sono virtuali).


Per disabilitare un'unità virtuale, basterà digitare il comando Subst seguito dall'unità da rimuovere e dal parametro “/D” (che sta per delete):
subst Z: /D
Nota: se provate a disabilitare un'unità virtuale non presente o già disabilitata, vi verrà ritornato un errore di parametro non valido.


Si tenga presente che le unità virtuali così create, restano attive solo finchè non effettuiamo una disconnessione, un riavvio o uno spegnimento del PC. Se ci servono ancora, dovranno essere ricreate.
Se sono necessarie ad ogni avvio del PC, si può inserire il comando relativo in Esecuzione Automatica oppure nella chiave Run del registro di sistema. Oppure si può usare l'apposita opzione del tool Visual Subst, descritto nelle prossime sezioni.

Per ulteriori informazioni sul comando Subst di Windows, potete fare riferimento al sito Microsoft TechNet a questo link diretto.

 5 - Pratica: creare dei files pronti

  Ora che abbiamo visto come creare unità virtuali, vediamo come si può rendere più semplice e veloce la loro creazione e disabilitazione.

A tal fine, tornano utili i files batch, ovvero files di testo con estensioni .BAT o .CMD che contengono al loro interno uno o più comandi che saranno eseguiti uno di seguito all'altro quando faremo un doppio click su tale file.

Se consideriamo il secondo esempio proposto in precedenza, per creare le due unità virtuali necessarie possiamo creare un file batch (tramite il Blocco Note o Notepad di Windows) che contenga il seguente testo (cambiate la lettera di unità e il percorso secondo le vostre esigenze):
subst X: “C:\UnitaVirtuale”
subst Z: “C:\UnitaVirtuale”
Possiamo dare il nome che vogliamo a tale file, ed assegnarli estensione .BAT o .CMD (ad esempio Subst_on.cmd) e salvarlo sul desktop. Così, ogni volta che ci servirà l'unità virtuale basterà fare un doppio click su tale file perchè le unità specificate vengano create e assegnate ai percorsi impostati.

Nota 1: Si tenga presente che all'interno di uno stesso file batch è possibile inserire quanti comandi si vuole, per creare o disabilitare più unità contemporaneamente. Se necessario, invece, si può creare un file per ogni singola unità, per poter attivare o disattivare solo le unità necessarie di volta in volta.

Nota 2: il file batch, dopo aver fatto click, si avvierà e si chiuderà da solo al termine, in pochissimo tempo, senza mostrare alcunchè a video.

Ora prepariamoci, sullo stesso stampo, un file che ci permetta di disabilitare velocemente le due unità create in precedenza. Basterà creare un file batch (ad esempio Subst_off.cmd, sempre sul desktop) con il seguente testo (da adattare alle proprie esigenze):
subst X: /D
subst Z: /D
Anche in questo caso, un doppio click e le unità “spariranno” all'instante.

Infine, per le proprie prove, può essere utile prepararsi un file che visualizzi la lista delle unità virtuali attive. Creiamo quindi un altro file batch (ad esempio Subst_lista.cmd) con questo contenuto:
subst
pause
Il comando Pause chiede di premere un tasto (ad esempio Enter) prima di terminare l'esecuzione, così da darci il tempo di leggere la lista di unità data dal comando Subst.
Se poi vogliamo creare un file un po' più esplicativo, possiamo allora inserirvi questo contenuto:
@echo Elenco delle unita' virtuali attive:
@echo ________________
@subst
@echo ________________
@pause


Ora abbiamo tutto quello che ci serve per creare i files di comando che ci sono necessari a creare, visualizzare e disabilitare in maniera molto veloce le tutte le unità virtuali che vogliamo.

 6 - Pratica: l'utility Visual Subst

  Anche se in realtà abbiamo già tutto quello di cui abbiamo bisogno, c'è una utility che ci permette di gestire le unità virtuali in modo grafico, più intuitivo, secondo la nota filosofia di Windows.

Si tratta di Visual Subst, un programmino gratuito molto semplice (l'attuale versione 1.0.5 occupa meno di 100KB!) che potete trovare a questo link. Ci sono due versioni, quella denominata “binaries” presenta il solo programma, da decomprimere e lanciare direttamente, ed è più leggera. Quella chiamata “installer” invece contiene un programma di installazione che creerà anche i collegamenti nel menù di Windows. Per il resto sono entrambe identiche, quindi scegliete voi.

La sua semplicità è data dal fatto che si tratta di una semplice interfaccia grafica che in realtà sfrutta le stesse funzioni di Windows fornite dal comando Subst (ecco perchè è utile sapere come funziona tale comando...). Ma nonostante la sua semplicità, è un tool sicuramente utile per configurare al volo in maniera intuitiva le unità virtuali (anche se, come vedremo, c'è un limite).

L'interfaccia è ridotta all'essenziale, ma non è un difetto: c'è tutto quello che serve!
In basso possiamo selezionare da un menù a tendina la lettera di unità da assegnare all'unità virtuale che vogliamo creare. A destra, invece, cliccando sull'incona della lente potremo scegliere il percorso della cartella da associare all'unità virtuale (compresi i percorsi di rete).
A questo punto basterà premere il simbolo “+” di colore verde, e l'unità virtuale verrà creata secondo le nostre impostazioni.
Le unità create verranno indicate sulla finestra centrale di Visual Subst.

Nota: Visual Subst visualizza anche le unità eventualmente create con il comando Subst, e viceversa, dato che usano le stesse funzioni di Windows. Potete quindi creare un'unità con Visual Subst e poi disabilitarla tramite il comando Subst, o viceversa.


Quando avete delle unità virtuali attive, indicate nella finestra di Visual Stub, cliccando su una di esse potrete disabilitarla con il tasto “X” rosso oppure salvarne la configurazione con il tasto a forma di dischetto (le configurazioni di unità virtuali vengono salvate nel file Vsubst.ini del programma).

Infine, c'è l'opzione “Apply virtual drives on Windows startup” che, se selezionata, permette di creare automaticamente ad ogni avvio di Windows le unità virtuali che avete salvato.

Il piccolo difetto di Visual Subst che abbiamo notato è l'impossibilità di selezionare, durante la creazione di un'unità virtuale, una lettera già usata per connettere un'unità di rete. In questo modo non sarà possibile usare direttamente Visual Subst per "redirezionare" percorsi di rete non attivi, ma in tali casi bisognerà ripiegare sul comando testuale Subst come visto in precedenza.

Per chi volesse sperimentare o avesse altre esigenze, esistono anche altri software simili come vSubst, oppure software che creano unità ottiche virtuali (per simulare dischi CD e DVD).

Nota finale: sebbene il comando Subst di Windows e il programma Visual Subst non presentano rischi diretti dovuti al loro uso, si raccomanda di fare attenzione nella redirezione di cartelle e files per evitare di modificare/cancellare contenuti in posizioni diverse da quelle attese. Inoltre, un backup preventivo dei dati è sempre una pratica ampiamente consigliabile...


--------------------------------------------------------------------------------------------
AZPoint.net - http://www.azpoint.net
Vietata ogni forma di duplicazione