Visual studio 2008 Visual Studio在批处理文件中插入无效字符
我有一些批处理文件,用于帮助自动化创建和重新加载开发数据库的过程。在VisualStudio中(即在VS数据库项目中)创建和维护这些批处理文件是有意义的。它们看起来很简单,如下所示:Visual studio 2008 Visual Studio在批处理文件中插入无效字符,visual-studio-2008,batch-file,Visual Studio 2008,Batch File,我有一些批处理文件,用于帮助自动化创建和重新加载开发数据库的过程。在VisualStudio中(即在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
@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命令处理器解释为命令的字符,即。,∩╗┐. 谷歌搜索对此没有任何结果。还有其他人碰到过这个吗?关于修复的想法
我有一个解决方法,只需在每个文件的开头添加一个空行,它就会显示错误,但其他方法可以正常工作,但是每次我运行其中一个文件时,我的肛门保持能力都会受到困扰。发生的事情是,VisualStudio很聪明,让您不知道批处理文件是以非ASCII字符编码保存的,例如,您的文件是UTF-8或其他非ASCII编码 我的项目团队已经被这个问题困扰了好几次,如果文件被签入CVS,那么会把文件弄得一团糟 我倾向于使用记事本++,看右下角的编码应该是ANSI,如果需要更改,请转到“格式”菜单并更改类型,然后保存
VisualStudio看起来应该相同,但文件大小应该减半 Ray说Visual Studio的默认文本格式类似于UTF-8是正确的。尽管记事本++是一个很棒的工具,我自己也使用它,但还有一种替代方法,您可以告诉Visual Studio以ASCII格式存储文本文件: 在VS2008中,在解决方案资源管理器中选择您的文件,然后选择文件…将myfile.bat另存为 在“保存”按钮的向下箭头上,选择“使用编码保存”
在“高级保存选项”对话框中保存时,在“编码”下拉列表中选择US-ASCII。根据需要设置行尾,或将其保留为当前设置。在visual studio中更正此问题的另一种方法是 在解决方案资源管理器中右键单击该文件,然后选择“使用打开” 选择一个。。。带编码选项 从编码列表中选择US-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
我也遇到过这个问题,只有当我创建一个语法文件用于Antlr4时,这个问题才很明显。我使用以下步骤: 在解决方案资源管理器中的文件上单击鼠标右键,然后选择“打开方式” 选择二进制编辑器 在打开的十六进制编辑器中按DEL三次并保存
注意:编码称为UTF-8,而不是UTC-8@Johannes,谢谢你指出,我已经改正了。谢谢-记事本++是正确的提示。奇怪的是,VisualStudio和cmd.exe不能在像文本文件这样基本的东西上协同工作。哈。被否决-虽然这确实有效,但jadusty的答案让你留在Visual Studio中,不需要外部程序。@MarkShapiro我的答案主要是关于“为什么”的教育,还有一个关于“如何”修复的旁白。谢谢你给我的第一个徽章-很高兴为你服务。这几个月来一直让我很生气。答案就在这里,所以一直以来…比使用第三方编辑器在VS之外管理批处理文件更好的解决方案。感谢您提供的专业提示。注意bat文件可以从visual studio内部运行也很有用,因此您无需出于任何目的离开VS: