Visual Studio wstawia nieprawidłowe znaki w plikach wsadowych
Mam kilka plików wsadowych, których używam do automatyzacji procesu tworzenia i przeładowywania baz danych programistycznych. Warto tworzyć i utrzymywać te pliki wsadowe w Visual Studio (np. w projekcie bazy danych VS). Wyglądają całkiem prosto, tak:
@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.
Problem polega na tym, że gdy je uruchamiam, to jest to wyjście:
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.
Innymi słowy, Visual Studio w jakiś sposób niewidocznie wstawia zestaw znaków, które procesor poleceń systemu Windows interpretuje jako polecenie, czyli"∩ ╗ ┐". Wyszukiwarka Google nic na ten temat nie zwróciła. Czy ktoś jeszcze na to wpadł? Jakieś pomysły na naprawę?
Mam obejście (po prostu dodaj pustą linię na początku każdego pliku, a pokaże błąd, ale poza tym działa dobrze), ale strona analna mnie denerwuje za każdym razem, gdy uruchamiam jeden z tych plików.
4 answers
Dzieje się tak, że VisualStudio jest sprytne i ukrywa cię przed faktem, że plik wsadowy został zapisany w kodowaniu znaków innych niż ASCII (np. Twój plik to UTF-8 lub inne kodowanie inne niż ASCII).
Mój zespół projektowy został złapany przez to kilka razy (jeśli pliki są sprawdzane w CVS to sprawia, że pliki bałagan).
Używam Notepad++, spójrz na kodowanie w prawym dolnym rogu (powinno być napisane, że jest to ANSI), jeśli chcesz to zmienić przejdź do menu Formatuj i zmień typ, a następnie zapisz.
Visual Studio powinno wyglądać identycznie, ale Rozmiar pliku powinien zmniejszyć się o połowę!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 14:59:06
Ray ma rację, gdy mówi, że domyślny format tekstu w Visual Studio to coś w rodzaju UTF-8. Chociaż Notepad++ jest świetnym narzędziem i sam go używam, istnieje alternatywa w tym, że możesz powiedzieć Visual Studio, aby przechowywał swój plik tekstowy w formacie ASCII:
W VS2008 wybierz swój plik w Eksploratorze rozwiązań i wybierz plik...Zapisz mój plik.bat As...
Na strzałce w dół przycisku Zapisz Wybierz Zapisz z kodowaniem.
Podczas zapisywania w zaawansowanych opcjach zapisu okno dialogowe, Wybierz US-ASCII z listy rozwijanej kodowanie. Ustaw zakończenia linii zgodnie z wymaganiami lub pozostaw je jako bieżące ustawienie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-03 09:00:19
Innym sposobem na poprawienie tego z poziomu visual studio jest...
- Kliknij prawym przyciskiem myszy plik w Eksploratorze rozwiązań i wybierz "Otwórz za pomocą"
- Wybierz jeden z "... With Encoding " options
- Wybierz US-ASCII z listy kodowań
- Zapisz plik
Teraz powinien zachować wybrane kodowanie przy każdym otwarciu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-08 14:36:56
Chociaż było to przydatne w moim dążeniu do rozwiązania problemu w Visual Basicu, rozwiązaniem jest nakazanie VB używania kodowania ASCII, jak pokazano poniżej:
Try
outFile = My.Computer.FileSystem.OpenTextFileWriter(myPath, True, System.Text.Encoding.ASCII)
outFile.WriteLine(macroText)
outFile.Close()
Catch ex As Exception
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 20:49:46