http://digilander.libero.it/Cenati

Special Folders

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript

 

 

 

 

 

Le cartelle speciali di Windows

Gli esempi di questa pagina sono disponibili anche nel file Zip da scaricare.

Windows ha alcune posizioni predefinite dove salvare i file. Ad esempio "desktop" è una cartella il cui contentuto riflette i file e le cartelle presenti sullo sfondo. O viceversa.

A seconda delle versioni di Windows oppure delle impostazioni di sistema, la posizione sul disco di queste cartelle speciali può cambiare. Un esempio tipico è quando ci sono più utenti del pc e di conseguenza la cartella dei documenti personali può cambiare. O anche il desktop personale, diverso da quello comune a tutti gli utenti.

Windows Script Host ha un oggetto che permette di indagare la posizione sul disco fisso di queste cartelle speciali. L'help Script56.chm riporta l'elenco che trascrivo qui sotto:

AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates

Questo significa che per sapere il nome della cartella predefinita per salvare i documenti posso usare il codice

Set WshShell = WScript.CreateObject("WScript.Shell")
msgbox WshShell.SpecialFolders("MyDocuments")

Per fare un diverso esempio di utilizzo degli special folders, prendiamo la cartella SendTo. Qui ci sono i programmi che appaiono quando si clicca su un file con il tasto destro del mouse e si sceglie "invia a". Tra gli script che ho preparato c'è QuickRename, un programma che cambia il nome ai file trascinati sopra la sua icona. Se voglio che QuickRename appaia nella cartella "Invia a" posso usare il metodo SpecialFolders per trovarne la posizione ed eseguire la copia. In questo modo posso selezionare dieci foto e cambiargli il nome selezionando "invia a" QuickRename. Questo può servire in uno script di installazione. 

Analogamente, posso mettere una copia dello script sul desktop. Questo codice chiede se si vuole creare un collegamento allo script sul desktop e in caso affermativo crea un link allo script stesso.


Link = MsgBox("Vuoi creare un collegamento sul desktop?",Vbyesno,"Link sul Desktop")
If Link=VbYes Then
      Set Shell=Wscript.CreateObject("Wscript.Shell")
      DesktopFolder=Shell.SpecialFolders("Desktop")
      Set shortcut=Shell.CreateShortcut(DesktopFolder & "\"& wscript.ScriptName & ".lnk")
      shortcut.TargetPath = Shell.ExpandEnvironmentStrings(wscript.ScriptFullName)
      shortcut.Save
end if

Il programma che segue elenca gli special folders presenti nel sistema.

'*****************************************************
' File:    SpecialFolders.vbs
' Elenca gli special folders presenti nel sistema
' http://digilander.libero.it/Cenati
' Codice liberamente utilizzabile citando il sito
'*****************************************************
Title = "Special Folders - Cenati Giovanni"

Set WshShell = WScript.CreateObject("WScript.Shell")
num= WshShell.SpecialFolders.Count
Testo= "Numero special folders trovati: " & num &vbCrLf
Testo=Testo & "numerati da 0 a " & num-1 &vbcrlf

For Each i In WshShell.SpecialFolders
    Testo = Testo & i & vbCrLf
Next
MsgBox Testo

In una message box sono elencati gli special folders. Essendo una collection, è possibile usare il ciclo for..each. In alternativa si può usare for i=0 to wshspecialfolders.count-1.  Questo per sottolineare che se la proprietà Count vale 18, avrò sì 18 elementi, ma numerati da zero a 17

Giovanni Cenati

 

 

 

© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript