Here you go both the INI and group style additions:
 Code:
Dim $sDOMAIN,$sSpooler
$sDOMAIN="westcare"
$sSpooler="\\wcps1\"


; ----------------------------INI printer handing start--------------------------
$ID = Left(@WKSTA, 4)
$PrinterList = Split(ReadProfileString('C:\printers.ini', $ID, 'Printers'), ';')
$DefPrinter = ReadProfileString('C:\printers.ini', $ID, 'Default')
For Each $Printer in $PrinterList
	myAddPrinter($Printer)
Next
If $DefPrinter mySetDefaultPrinter($DefPrinter) EndIf
; ----------------------------INI printer handing end----------------------------


; --------------------------Group printer handing start--------------------------
;set index to 0 for looping through groups
$iIndex = 0

;get first group name
$sGroup=EnumGroup($Index)
While Len($sGroup) AND @ERROR=0
	;if group name starts with print- or printd-
	If (InStr($sGroup,$sDOMAIN+"\print-")=1) OR (InStr($sGroup,$sDOMAIN+"\printd-")=1)
		$sPrinter=SubStr($sGroup,InStr($sGroup,"-")+1) ; Note, this won't work if you have "-" in the domain name
		myAddPrinter($sSpooler+$sPrinter)
		; Try and set the printer as default if requested
		If InStr($sGroup,$sDOMAIN+"\printd-")=1 mySetDefaultPrinter($sSpooler+$sPrinter) EndIf
	EndIf
	$iIndex=$iIndex+1		 ;increase the loop counter by 1
	$sGroup=EnumGroup($iIndex)	 ;get next group name

; loop until end of groups list
Loop
; --------------------------Group printer handing end----------------------------

; -------------------------User defined function start---------------------------
Function myAddPrinter($sPath)
	; Static variable, implemented as global
	If Not IsDeclared($__DonePrinters) Global $__DonePrinters $__DonePrinters=@CRLF EndIf

	If InStr($__DonePrinters,@CRLF+$sPath+@CRLF)
		; Printer has already been added - no point in doing it again.
	Else
		; Add printer and make sure it’s successful
		If AddPrinterConnection($sPath)
			; Display error message and text
			"Error Adding Printer: "+$ssPath+@CRLF
			"Error: "+@SERROR+@CRLF
		Else
			"Added printer: "+$sPath+@CRLF	; Display success message
			$__DonePrinters=$__DonePrinters+$sPath+@CRLF		; Record success
		EndIf
	EndIf
EndFunction

Function mySetDefaultPrinter($sPath)
	; Static variables, implemented as globals
	If Not IsDeclared($__DonePrinters) Global $__DonePrinters $__DonePrinters=@CRLF EndIf
	If Not IsDeclared($__DoneDefault) Global $__DoneDefault $__DoneDefault=0 EndIf

	; If the printer was added OK and we have not already set the default...
	If InStr($__DonePrinters,@CRLF+$sPath+@CRLF) AND $__DoneDefault=0
		If SetDefaultPrinter($sPath)
			; Display error message and text
			"Error Setting Default Printer: "+$sPath+@CRLF
			"Error: "+@SERROR+@CRLF
		Else
			"Set default to: "+$sPath+@CRLF	; Display success message.	
			$__DoneDefault=1
		EndIf
	EndIf
EndFunction
; -------------------------User defined function end-----------------------------


As you want to add the printer in two different places I've converted the common code to user defined functions (UDFs) called myAddPrinter() and mySetDefaultPrinter().

The variables that track the list of printers added must be preserved between function calls. In other languages you would declare a local static variable, however this feature is not available in KiXtart so we use global variables instead.

Other than that the code is identical, just shuffled about a bit.

You might still want to change the already-mapped check to using the PriMapState() function, as it will allow you to avoid the cost associated with removing printers which you are then going to add again.

BTW, in this code if the default printer is defined in the INI file and is set OK then the default printer defined by group is ignored. If you'd prefer the group defined default printer to take priority then just swap the INI and group code around so that the group code executes first.