PowerShell, 146146 104 Bytes
param($i)$x=$i.indexof('$a,')-1;$a=-join$i[1.$b=$i.$x];$b=-join$i[trim($x+2).."[]($i.length-2)];")-split',';($a,(1+$a))[$i[0]-eq'(']..($b,(+$b-1))[$i[-1]-eq')']-join'*'|iex
Wow. Gonna see if I can golf down the parsing better, because this is ugly, but string manipulation in PowerShell is a weak point anyway.Golfed off 42 bytes by changing how the numbers are extracted from the input. Woo!
param($i) # Takes input string as $i
$x=$i$a,$b=$i.indexoftrim(','"[]()")-1split',' # Trims the []() off $i, splits on comma,
# Finds where the comma is
$a=-join$i[1..$x] # Splits the first number off, stores in $a
$b=-join$i[($x+2)..($i.length-2)] # Splitsstores the secondleft numberin off,$a storesand the right in $b
($a,(1+$a))[$i[0]-eq'(']..($b,(+$b-1))[$i[-1]-eq')']-join'*'|iex
# Index into a dynamic array of either $a or $a+1 depending upon if the first
# character of our input string is a ( or not
# Then .. ranges that together with
# The same indexingthing applied to $b, depending if the last character is ) or not
# Then that's joined with asterisks before
# Being executed with iex (i.e., eval'd)