Although it is not optimized I just whipped up the following script to do this (sendkeys rule) Tested so far on 98, NT and 2k. Input would be greatly appreciated.

code:

;
; This script checks for the existence of a printer
; if the printer exists then in installs a new printer

break on
$localkey = ""

$oldserver = "SERVER1"
$oldprinter = "PrintQ1"

$newserver = "SERVER2"
$newprinter = "PrintQ2"

? "Start"

if @inwin = 1
$localkey = "HKEY_CURRENT_USER\Printers\Connections"
$sep = ","
else
? "First if - setting key"
$localkey = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Print\Printers"
$sep = "\"
endif

? "Looking for printer $oldprinter on $oldserver"
? "To Replace with $newprinter on $newserver" ?

$found1 = 0
$found2 = 0
$found3 = 0

$Index = 0
$index2 = 0
:Loop1

if @inwin = 1
$KeyName = ENUMKEY($localkey, $Index)
else
? "second if - enum printer"
$PRINTER=ENUMKEY ($localkey,$INDEX)
;$PORT=ENUMVALUE ("$localkey\$PRINTER",5)
$KeyName=READVALUE ("$localkey\$PRINTER","PORT")
endif


If @ERROR = 0
? ;"Name found: $KeyName"
$lenkey = len($keyname)
$keyname = substr($keyname,3,$lenkey - 2)
" $keyname"
$comma = instr($keyname,$sep)
$servername = substr($keyname,1,$comma-1)
$Printer = substr($keyname,$comma+1,$lenkey - $comma - 1)

" Server = $Servername, Printer = $printer"
if $printer = $oldprinter
$found1 = 1
endif

if $printer = $newprinter
$found2 = 1
endif

$Index = $Index + 1

goto Loop1
Endif

if $found1 = 1
? "Printer $oldprinter Found"
if $found2 = 1
? "Printer $newprinter already exists"
endif
endif

if $found1 = 1 and $found2 = 0
if @inwin = 1
? ".......Please wait..."
If ADDPRINTERCONNECTION ("\\$newserver\$newprinter") = 0
? "Added printer connection to \\$newserver\$newprinter ...."
else
? "Error = @error"
Endif
else
RUN "rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter"
? "Please wait"
sleep 1
sendkeys("{ENTER}")
sendkeys("~N")
sendkeys("{ENTER}")
sendkeys("~P")
sendkeys("\\$newserver\$newprinter")
sendkeys("~N")
sendkeys("{ENTER}")
sleep 1
sendkeys("$newprinter")
sendkeys("~N")
sendkeys("{ENTER}")
sleep 1

sendkeys("~N")
sendkeys("{ENTER}")
sleep 1
? "Checking Printer..."
endif


? "Paused" ;Just to make sure it's running right
get $c


[This message has been edited by Paul_Berquam (edited 21 November 2000).]

_________________________
He was a good little monkey and always very curious...