我有一些批处理文件,用于帮助自动化创建和重新加载开发数据库的过程。在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命令处理器正在解释为命令的一组字符,即“∩╗┐”。谷歌搜索没有返回任何内容。还有其他人碰到这个吗?关于修复的想法?
我有一个解决方法(只需在每个文件的开头添加一个空行,它会显示错误,但其他方法都可以正常工作),但每次运行时我自己的肛门保留方都会生气其中一个文件。
答案 0 :(得分:77)
在VS2008中,在解决方案资源管理器中选择您的文件,然后选择文件...将myfile.bat另存为...
在“保存”按钮的向下箭头上,选择“使用编码保存”。
在“高级保存选项”对话框中保存时,在“编码”下拉列表中选择“US-ASCII”。根据需要设置行结尾,或将其保留为当前设置。
答案 1 :(得分:50)
正在发生的事情是,VisualStudio很聪明,并且使您无法将批处理文件保存为非ASCII字符编码(例如,您的文件是UTF-8或其他非ASCII编码)。
我的项目团队已被捕获了几次(如果文件被检入CVS,它会使文件变得混乱)。
我倾向于使用Notepad ++,查看右下角的编码(应该说它是ANSI),如果需要更改它,请转到格式菜单并更改类型然后保存。
Visual Studio应该看起来相同,但文件大小应减半!
答案 2 :(得分:12)
在视觉工作室内纠正此问题的另一种方法是......
现在,无论何时打开它都应保留所选的编码。
答案 3 :(得分:0)
虽然这对我在Visual Basic中解决问题很有用,但解决方法是告诉VB使用ASCII编码,如下所示:
var configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 300;
let sessionManager = Alamofire.SessionManager(configuration: configuration)
答案 4 :(得分:0)
我也遇到了这个问题,只有当我创建一个与Antlr4一起使用的语法文件时,这才显而易见。我使用以下步骤: