Оказывается, вопрос не в том, как передать символ точки как часть аргумента пакетного файла, а скорее в том, как правильно процитировать идентификатор, который содержит символ точки в SQL , и точнее, кажется, в Transact-SQL.
Я думаю, вам следует попробовать дополнительно заключить имя базы данных в квадратные скобки, например:
sqlcmd -S %1 -i "createDB.sql" -v dbname = "[DB%2]"
В качестве альтернативы вам может потребоваться включить скобки вокруг $dbname
в сценарии SQL (т. Е. вместо для помещения их в командную строку), но не видя этого сценария, я не могу сказать наверняка.