Visual Studio вставляет недопустимые символы в пакетные файлы - PullRequest
63 голосов
/ 12 мая 2009

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

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

Ответы [ 4 ]

77 голосов
/ 03 июня 2009

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

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

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

При сохранении в диалоговом окне «Дополнительные параметры сохранения» выберите US-ASCII в раскрывающемся списке «Кодировка». Установите требуемый конец строки или оставьте его как «Текущий параметр».

50 голосов
/ 12 мая 2009

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

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

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

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

13 голосов
/ 08 июля 2015

Еще один способ исправить это из Visual Studio - это ...

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

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

0 голосов
/ 17 января 2017

Хотя это было полезно в моем стремлении решить проблему в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...