Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 Visual Studio在批处理文件中插入无效字符_Visual Studio 2008_Batch File - Fatal编程技术网

Visual studio 2008 Visual Studio在批处理文件中插入无效字符

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

我有一些批处理文件,用于帮助自动化创建和重新加载开发数据库的过程。在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 -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: