Asked By Stan Starinski
21-Nov-09 09:28 AM

Goto:
http://windowsdevcenter.com/pub/a/windows/2005/01/04/print_directories.html
Printing Directory Listings
blog if she lived today. Imagine her writing poetry on her laptop and saving
it in a folder named C:\Sonnets, when suddenly she gets an email
from her publisher saying he needs the titles of all the poems she is written
so far. So Liz opens Windows Explorer and selects the C:\Sonnets folder to
display a list of sonnets in the right-hand pane (Figure 1). Then
she wonders, How can I print a list of titles of these files?"
Funny how often users need to do this, yet there is no simple way to
accomplish the simple task through the Windows GUI. Of course, if you are
familiar with the command line or can do some scripting, it is not difficult.
So, out of curiosity I decided to "count" the ways this simple task could be
done in Windows; here is what I came up with.
1. Using the Command Line
The simplest way is to use the good old dir command with the /b switch to
suppress everything except the filenames. For example, to display the names
of files in C:\Sonnets, you do the following:
C:\>dir c:\sonnets /b
which produces:
But only three in all God's universe.doc
Go from me. Yet I feel that I shall stand.doc
I lift my heavy heart up solemnly.doc
I thought once how Theocritus had sung.doc
The face of all the world is changed, I think.doc
Thou hast thy calling to some palace-floor.doc
Unlike are we, unlike, O princely Heart!.doc
You can either redirect the output to a text file with:
dir c:\sonnets /b > titles.txt
Or you can redirect it to your default printer with:
dir c:\sonnets /b > prn
If you do not want to open a command-prompt window first, you can simply go
to Start -> Run and type:
cmd /c dir c:\sonnets /b > lpt1
If the directory you want to list contains subdirectories, you can use tree
instead of dir:
cmd /c tree c:\sonnets /f > lpt1
2. Adding a Context Menu Item
It would be nice to right-click on a folder in Windows Explorer and print a
list of items in the folder, would not it? This is easy to do by first
creating the following batch script using Notepad:
@echo off
dir %1 /-p /o:gn > "%temp%\Listing"
start /w notepad /p "%temp%\Listing"
del "%temp%\Listing"
exit
Save this with some name like printdir.bat in your %windir% directory, and
add "Print Directory Listing" to your context menu for Windows Explorer as
follows. Open the Folder Options tool in Control Panel, select the File
Types tab, and in the File Types column select the item labeled File Folder.
Then click on the Advanced button, click on New, and specify a name for the
action you want to perform and the batch file that performs it (Figure 2):
Figure 2. Associating the batch file printdir.bat with the action "Print
Directory Listing"
Once you are done, you can right-click on a folder in Windows Explorer and
print a list of the files it contains (Figure 3):
Figure 3. Printing a directory listing from Windows Explorer
This hack is cool, but it has a flaw when you implement it on XP: after
you have implemented it, every time you try to open a folder using Windows
Explorer, the Search Companion window opens instead of the folder you
selected. The workaround is a quick Registry edit described in Knowledge
Base article 321379, where this hack is found. Of course, you can further
customize the hack by tweaking the syntax of the dir command or replacing it
with tree, and so on.
3. Using Windows Script Host
Windows Script Host lets you leverage the power of scripting languages like
VBScript and JScript to automate almost any task you need to perform. For
example, here is a simple JScript that will list the names of all the files
in the C:\Sonnets folder:
var fso, e, file;
fso = new ActiveXObject("Scripting.FileSystemObject");
e = new Enumerator(fso.GetFolder("c:\sonnets").files);
for (e.moveFirst(); ! e.atEnd(); e.moveNext()) {
file = e.item();
WScript.echo(file.name);
}
Saving this script as listdir.js and running it with Cscript.exe, the