I have scripted ListPrinters.vbs to return all the printers and their locations that a client has access to.

The syntax for using ListPrinters.vbs is:

cscript //nologo <Drive:>\Folder\ListPrinters.vbs

The console output is in CSV format. Here is a sample:

"ScanSoft PDF Create!",""
"NUL",""
"HP Officejet 6200 series fax",""
"HP Officejet 6200 series",""
"Generic / Text Only",""
"File Print FedEx Kinko's","FedEx Kinko's"
"\\JSI001\HP Business Inkjet 2250 (PCL5C)","HDQ Printer Room"
"\\JSI001\ZFax","Courier"
If you wanted to process this list in a batch file, use:
<font size="1">for /f Token=1* Delims=," %%a in ('<b>cscript //nologo <Drive:>\Folder\ListPrinters.vbs</b>') do (
 set prt=%%a
 set loc=%%b
 . . . .
)</font>
ListPrinters.vbs contains:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "\{impersonationLevel=impersonate\}!\\" & strComputer & "\root\cimv2")
Set iPrt =  objWMIService.ExecQuery ("Select * from Win32_Printer")
For Each objPrinter in iPrt
    Wscript.Echo <div class="Contentquote"><center>" &objPrinter.Name & </center></div>,<div class="Contentquote"><center> & objPrinter.Location & </center></div>"
Next