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中纠正这个问题的方法是…
- 右键单击解决scheme资源pipe理器中的文件并select“打开方式”
- select“…与编码”选项之一
- 从编码列表中selectUS-ASCII
- 保存文件
现在,只要打开它,它应该保留所选的编码。
虽然这对于我在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