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

时间:2009-05-12 19:12:38

标签: visual-studio-2008 batch-file

我有一些批处理文件,用于帮助自动化创建和重新加载开发数据库的过程。在Visual Studio中创建和维护这些批处理文件是有意义的(即,在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命令处理器正在解释为命令的一组字符,即“∩╗┐”。谷歌搜索没有返回任何内容。还有其他人碰到这个吗?关于修复的想法?

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

5 个答案:

答案 0 :(得分:77)

当他说Visual Studio的默认文本格式类似于UTF-8时,Ray是正确的。尽管Notepad ++是一个很棒的工具,我自己也使用它,但是有一种方法可以告诉Visual Studio以ASCII格式存储文本文件:

在VS2008中,在解决方案资源管理器中选择您的文件,然后选择文件...将myfile.bat另存为...

在“保存”按钮的向下箭头上,选择“使用编码保存”。

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

答案 1 :(得分:50)

正在发生的事情是,VisualStudio很聪明,并且使您无法将批处理文件保存为非ASCII字符编码(例如,您的文件是UTF-8或其他非ASCII编码)。

我的项目团队已被捕获了几次(如果文件被检入CVS,它会使文件变得混乱)。

我倾向于使用Notepad ++,查看右下角的编码(应该说它是ANSI),如果需要更改它,请转到格式菜单并更改类型然后保存。

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

答案 2 :(得分:12)

在视觉工作室内纠正此问题的另一种方法是......

  1. 右键单击解决方案资源管理器中的文件,然后选择“打开方式”
  2. 选择其中一个“...使用编码”选项
  3. 从编码列表中选择US-ASCII
  4. 保存文件
  5. 现在,无论何时打开它都应保留所选的编码。

答案 3 :(得分:0)

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

var configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 300;
let sessionManager = Alamofire.SessionManager(configuration: configuration)

答案 4 :(得分:0)

我也遇到了这个问题,只有当我创建一个与Antlr4一起使用的语法文件时,这才显而易见。我使用以下步骤:

  1. 在解决方案资源管理器中右键单击文件,然后选择“打开方式”
  2. 选择“二进制编辑器”
  3. 在打开的十六进制编辑器中按DEL 3次并保存