Powershell will do this, and give you better error handling. However more development work.
The other thing to think about is using a product like SQLCompare to build your scripts. I know you might not have control of all versions that customers have, but you could license and programmatically run this as well.
http://www.red-gate.com/products/sql-development/sql-compare/
Disclosure: I work for Red Gate.