Stampare il contenuto di qualsiasi cartella con una procedura automatica

Windows, anche nelle versioni più recenti, non dispone di una funzionalità che permetta di stampare direttamente l'elenco dei file e delle sottocartelle presenti all'interno di una determinata directory.

Windows, anche nelle versioni più recenti, non dispone di una funzionalità che permetta di stampare direttamente l’elenco dei file e delle sottocartelle presenti all’interno di una determinata directory. Esistono software sviluppati da terze parti (come “Karen’s Directory Printer“; lo abbiamo presentato in quest’articolo) che consentono di colmare questa lacuna.
In alternativa, come abbiamo già avuto modo di evidenziare in passato, è possibile creare autonomamente un file batch che permetta di raggiungere il medesimo obiettivo.

In quest’articolo vogliamo presentare una metodologia particolarmente adatta per gli utenti meno esperti che permette di aggiungere immediatamente la funzionalità per la stampa del contenuto di una qualuque cartella.

” all’interno del menù contestuale di Windows (compare premendo il tasto destro del mouse su una qualunque directory):

Dopo qualche istante di attesa, a seconda della mole di dati presente nella directory scelta, si aprirà automaticamente il Blocco Note di Windows. Cliccando sul menù File, Stampa si potrà inviare la lista alla stampante.

possono essere eliminati dal disco fisso: non sono più necessari.

A beneficio dei più esperti, precisiamo che il file configura.vbs, una volta eseguito, provvede a copiare creare, sul disco fisso, una cartella denominata stampadir ed a copiarvi al suo interno il file stampadir.bat. Ecco le righe di codice utilizzate allo scopo:

Dim objFSO, objFolder, strDirectory, objEnv, filebat
Set Shell = CreateObject("WScript.Shell")
Set objEnv = Shell.Environment("PROCESS")
strDirectory = objEnv("systemdrive") & "\stampadir"
Set objFSO = CreateObject("Scripting.FileSystemObject")

if objFSO.FolderExists(strDirectory) = false then
	Set objFolder = objFSO.CreateFolder(strDirectory)
end if

objFSO.CopyFile "stampadir.bat", strDirectory & "\stampadir.bat"

Il secondo passo consiste nel creare un collegamento al file \stampadir\stampadir.bat all’interno della directory di sistema ove viene conservato il contenuto del menù Invia a:

Percorso = Shell.SpecialFolders("SendTo")
Set link = Shell.CreateShortcut(Percorso & "\Stampa contenuto della cartella.lnk")
link.Description = "Stampa contenuto della cartella"
link.IconLocation = "shell32.dll,16"
link.TargetPath = "%systemdrive%\stampadir\stampadir.bat"
link.WindowStyle = 7
link.WorkingDirectory = "%systemdrive%\stampadir"
link.Save

Come si vede, il metodo CreateShortcut permette di generare un nuovo collegamento per il quale vengono poi definitive tutte le varie caratteristiche. L’icona raffigurante una stampante viene estratta attingendo al contenuto della libreria shell32.dll, in corrispondenza della sedicesima posizione.

Il file stampadir.bat, invece, contiene le seguenti righe:

@echo off
dir %1 /-p /s /o:gn > "%temp%\dir.txt"
start /w notepad "%temp%\dir.txt"
del "%temp%\dir.txt"
exit

Com’è possibile notare, il contenuto della cartella di volta in volta selezionata viene sempre memorizzato in un file temporaneo (dir.txt), poi rimosso.

Qualora si volesse rimuovere il meccanismo appena implementato, basterà semplicemente accedere alla cartella %appdata%\Microsoft\Windows\SendTo nel caso di Windows 7 o %userprofile%\SendTo in Windows XP ed eliminare il file “Stampa contenuto della cartella“.
Per finire, si dovrà rimuovere la cartella \stampadir, creata nella directory radice del disco fisso.

Abbiamo controllato il corretto funzionamento dello script sia su piattaforma Windows 7 che su Windows XP SP3.

Ti consigliamo anche

Link copiato negli appunti