Visual Studio在batch file中插入无效字符

我有一些batch file,用来帮助自动化创build和重新加载开发数据库的过程。 在Visual Studio中创build和维护这些batch file是有意义的(即在VS数据库项目中)。 他们看起来很简单,就像这样:

@echo off echo Setting server and db from defaults. set SERVERNAME=(LOCAL) set DB=PLEDGES echo Creating tables on server %SERVERNAME% and database %DB% sqlcmd -S %SERVERNAME% -d %DB% -E -i DropAllTables.sql sqlcmd -S %SERVERNAME% -d %DB% -E -i dbo.UserType.Table.sql sqlcmd -S %SERVERNAME% -d %DB% -E -i dbo.RegisteredUser.Table.sql echo Done creating tables. 

问题是,当我运行它们时,这是输出:

 C:\> '' is not recognized as an internal or external command, operable program or batch file. Creating tables on server (LOCAL) and database PLEDGES Done creating tables. 

换句话说,Visual Studio以某种方式无形地插入了Windows命令处理器正在解释为命令的一组字符,即“∩╗┐”。 谷歌search没有返回任何东西。 有其他人遇到这个? 关于修复的想法?

我有一个解决方法(只是在每个文件的开头添加一个空行,它会显示错误,但其他方面都可以正常工作),但是我每次运行其中的一个时,自己的肛门保持性一面会感到恼火文件。

发生的事情是,VisualStudio正在聪明地将您的batch file保存为非ASCII字符编码(例如,您的文件是UTF-8或其他非ASCII编码)。

我的项目团队被抓了几次(如果文件被检入到CVS中,会使文件变得混乱)。

我倾向于使用记事本++,看看右下方的编码(它应该说是ANSI),如果你需要改变它去格式菜单,改变types,然后保存。

Visual Studio应该看起来一样,但文件大小应该减半!

当他说Visual Studio的默认文本格式是UTF-8时,Ray是正确的。 虽然记事本++是一个很好的工具,我自己也使用它,但还有一种方法可以告诉Visual Studio以ASCII格式存储文本文件:

在VS2008中,在解决scheme资源pipe理器中select您的文件并select文件…将myfile.bat另存为…

在保存button的向下箭头上,select保存与编码。

在“高级保存选项”对话框中保存时,请在编码下拉列表中selectUS-ASCII。 根据需要设置行尾,或保留为当前设置。

另一种在Visual Studio中纠正这个问题的方法是…

  1. 右键单击解决scheme资源pipe理器中的文件并select“打开方式”
  2. select“…与编码”选项之一
  3. 从编码列表中selectUS-ASCII
  4. 保存文件

现在,只要打开它,它应该保留所选的编码。

虽然这对于我在Visual Basic中解决问题很有帮助,但解决方法是告诉VB使用ASCII编码,如下所示:

 Try outFile = My.Computer.FileSystem.OpenTextFileWriter(myPath, True, System.Text.Encoding.ASCII) outFile.WriteLine(macroText) outFile.Close() Catch ex As Exception