Here's code that I have working:
 Code:
;; KixGenerated: 2010/09/13 08:05:58
break on
;call @ScriptDir +"\dirlist.udf"
;call @ScriptDir +"\copyfiles2.udf"
;call @ScriptDir +"\msg.udf"
;call @ScriptDir +"\copyfiles.udf"

$Recurse = 1			; recursion is ON by default

; Get the source & dest args specified on the command-line

; get the command line as an array - elements 0 & 1 are the kix.exe and the script.kix items
$aCmdLine = GetCommandLine(1)

; scan the array looking for the source arg
$ = AScan($aCmdLine, '--s:', , , 1)		; get SOURCE arg
If $ > 1					; 
  $Source = SubStr($aCmdLine[$], 5)
Else						; arg is required - die if not provided
  'ERROR: Source was not specified!' @CRLF @CRLF
  'Usage: myscript.kix --s:Source_path --d:destination_path' @CRLF
  Quit 1
EndIf

; scan the array looking for the destination arg
$ = AScan($aCmdLine, '--d:', , , 1)		; get destination arg
If $ > 1					; 
  $Dest = SubStr($aCmdLine[$], 5)
Else						; arg is required - die if not provided
  'ERROR: Destination was not specified!' @CRLF @CRLF
  'Usage: myscript.kix --s:Source_path --d:destination_path' @CRLF
  Quit 1
EndIf

; scan the array looking for the recursion flag
$ = AScan($aCmdLine, '--r', , , 1)		; get recursion flag
If $ > 1					; 
  $Recurse = 0
EndIf

If (GetFileAttr($Source) & 16) = 0		; force recursion OFF for single-file copy
  $Recurse = 0
EndIf


; debug messages
' Source: ' $Source ?
'   Dest: ' $Dest ?
'Recurse: ' $Recurse ?

CopyFiles($Source, $Dest, 1, $Recurse)

Quit 0						; must use QUIT with GetCommandLine!!

Running
CF.KIX --S:C:\PROJECT\KIXLIB\DIRPLUS.UDF --D:C:\TEMP\KIXLIB
copies the single file from the source to the destination.
Running
CF.KIX --S:C:\PROJECT\KIXLIB\ --D:C:\TEMP\KIXLIB --R
Copies the contents of KixLib, but not the two subfolders.
Running
CF.KIX --S:C:\PROJECT\KIXLIB\ --D:C:\TEMP\KIXLIB
copies all of the files, including the two subfolders DOCS and OLD.

You'll have to re-enable the CALL statements, as I ran this through KGen to assemble the UDFs and run a Sanity check. Declaring your vars to limit scope would be a good idea, too, especially when using UDFs.

If you want to push this to multiple computers, you could wrap the logic around this to replace C: with '\\' + $TargetComp + '\C$', enumerating a list of target computer names from a file.

Glenn
_________________________
Actually I am a Rocket Scientist! \:D