This is what I was looking for.
import arcgisscripting, os
import sys
gp = arcgisscripting.create(9.3)
gp.Workspace = "D:\\Workspace\\shapedata"
# With Files:
# r20010101.shp with Fields and Input like:
# FID,Shape,POINTID,D20010101
# 0, Shape, 1, 10
# 1, Shape, 2, 14
# r20020101.shp with Fields and Input like:
# FID,Shape,POINTID,D20020101
# 0, Shape, 1, 12
# 1, Shape, 2, 13
# r20020601.shp with Fields and Input like:
# FID,Shape,POINTID,D20020601
# 0, Shape, 1, 11
# 1, Shape, 2, 9
# r20030101.shp with Fields and Input like:
# FID,Shape,POINTID,D20030101
# 0, Shape, 1, 3
# 1, Shape, 2, 7
fcs = gp.ListFeatureClasses("", "POINT")
x=0
for fc in fcs:
outfc = "D:\\Workspace\\shapeout"
if x==0:
# just run once:
x=x+1
fc_old=fc #r20010101.shp
fn_old="D"+fc[1:-4] #D20010101
else:
# do this, as long as there are shapefiles in gp.workspace
# examples given here for the FIRST SpatialJoin
fc_new=fc # r20020101.shp
outfc=outfc+str(x) # D:\\Workspace\\shapeout1
fn_new="D"+fc[1:-4] # D20020101
fieldmappings = gp.CreateObject("FieldMappings")
vt = gp.CreateObject("ValueTable")
fieldmappings.AddTable(fc_old)
fieldmappings.AddTable(fc_new)
if x>1:
# This should prevent Fields "Join_Count", "Join_Co1", "Join_Co2"....
fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("Join_Count"))
gp.SpatialJoin(fc_old, fc_new, outfc, "#", "#", fieldmappings)
if x>1:
# delete temporary file e.g. shapeout1.shp after next loop
gp.delete_management(infc)
fc_old=outfc + ".shp" # D:\\Workspace\\shapeout1.shp will be joined in next loop with e.g. r20020601.shp
x=x+1
# The final Output will be 1 Shapefile with Fields and Input like:
# FID,Shape,POINTID,D20010101,D20020101,D20020601,D20030101
# 0, Shape, 1, 10, 12, 11, 3
# 1, Shape, 2, 14, 13, 9, 7
As I have got 30 Pointfiles (150MB each), this takes pretty long on my Computer (not too old), like 1-2 hour for every SpatialJoin!