Подтвердить что ты не робот

Visual Studio вставляет недопустимые символы в пакетных файлах

У меня есть пакетные файлы, которые я использую, чтобы помочь автоматизировать процесс создания и перезагрузки баз данных разработки. Имеет смысл создавать и поддерживать эти пакетные файлы в 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 как команду, т.е. "∩╗┐". Поиск в Google ничего не ответил. Кто-нибудь еще сталкивается с этим? Мысли об исправлении?

У меня есть обходное решение (просто добавьте пустую строку в начало каждого файла, и она покажет ошибку, но в остальном работает нормально), но анал-удерживающая сторона меня раздражается каждый раз, когда я запускаю один из этих файлов.

4b9b3361

Ответ 1

Что происходит, так это то, что VisualStudio умеет и скрывает вас от того факта, что ваш пакетный файл был сохранен в кодировке без ASCII-символа (например, ваш файл UTF-8 или некоторая другая кодировка, отличная от ASCII).

Моя проектная команда была поймана несколько раз этим (если файлы отмечены в CVS, это делает файлы беспорядочными).

Я использую Notepad ++, посмотрите на кодировку в правом нижнем углу (она должна сказать, что это ANSI), если вам нужно ее изменить, перейдите в меню формата и измените тип, затем сохраните.

Visual Studio должна выглядеть одинаково, но размер файла должен быть вдвое меньше!

Ответ 2

Луч правилен, когда он говорит, что формат текста в формате Visual Studio для текста похож на UTF-8. Хотя Notepad ++ - отличный инструмент, и я сам его использую, есть альтернатива в том, что вы можете сказать Visual Studio хранить текстовый файл в формате ASCII:

В VS2008 выберите свой файл в проводнике решений и выберите Файл... Сохранить myfile.bat Как...

На стрелке вниз на кнопке "Сохранить" выберите "Сохранить с кодировкой".

При сохранении в диалоговом окне "Дополнительные параметры сохранения" выберите "US-ASCII" в раскрывающемся списке "Кодировка". Задайте окончания строки по необходимости или оставьте ее в качестве текущей настройки.

Ответ 3

Другой способ исправить это изнутри visual studio - это...

  • Щелкните правой кнопкой мыши файл в проводнике решений и выберите "Открыть с помощью"
  • Выберите один из параметров "... с кодировкой"
  • Выберите US-ASCII из списка кодировок
  • Сохранить файл

Теперь он должен сохранять выбранную кодировку всякий раз, когда вы ее открываете.

Ответ 4

Хотя это было полезно в моих поисках решения проблемы в 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