Coming from an Oracle background, Oracle\'s SQLPlus would let you indicate a variable. If the variable wasn\'t set, you\'d be prompted to provide a value.
I\'m using SQ
There is a free tool "SQLS*Plus" which is an SQL*Plus for SQL Server. Works with SQL Server 2000/2005 and 2008
Very flexible with data formatting (set lines size, pagesize, etc), variables (&, &&), spool, etc - light years better than isql, osql or sqlcmd
I downloaded SQLS*Plus from http://www.memfix.com
SQLCMD does not support prompting for missing variable names. However, you can use SSMS in SQLCMD mode. Dunno how you're error was caused, but this works for me:
:setvar table "sys.tables"
SELECT * FROM $(table);