I presume you have a bunch of clipping masks and a base layer and you want to export every clipping mask + the base layer as a separate png.

This script will ask for an output folder, select the top layer and then will start to save pngs, hide current clipping mask and select a layer below. Names will be documentName_layerIndex.png
Result:

function main()
{
if (documents.length == 0) return false;
var outputFolder = Folder.selectDialog('', new Folder(Folder.myDocuments));
if (outputFolder == null) return false;
var doc = activeDocument,
docName = doc.name.split('.')[0],
counter = 1;
doc.activeLayer = doc.layers[0];
while (doc.activeLayer.grouped)
{
saveForWebPng(outputFolder + "/" + docName + "_" + counter + ".png");
doc.activeLayer.visible = false;
selectPreviousLayer();
counter++
};
function saveForWebPng(saveFile)
{
var pngOpts = new ExportOptionsSaveForWeb;
pngOpts.format = SaveDocumentType.PNG
pngOpts.PNG8 = false;
pngOpts.transparency = true;
pngOpts.interlaced = false;
pngOpts.quality = 100;
activeDocument.exportDocument(new File(saveFile), ExportType.SAVEFORWEB, pngOpts);
}; // end of saveForWebPng()
function selectPreviousLayer() {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Bckw'));
desc.putReference(cTID('null'), ref);
desc.putBoolean(cTID('MkVs'), false);
executeAction(cTID('slct'), desc, DialogModes.NO);
}; // end of selectPreviousLayer()
function cTID(s)
{
return app.charIDToTypeID(s);
};
function sTID(s)
{
return app.stringIDToTypeID(s);
};
}
app.activeDocument.suspendHistory("temp", "main()");