Использование «En Dash» из входного файла в командный файл - PullRequest
2 голосов
/ 12 мая 2011

Самое трагичное, у меня есть несколько командных проектов TFS с черточкой в ​​них.

Если вы не знакомы с en dash, откройте MS Word и введите alt + 8211.

Вы увидите увеличенную черту. (Как это, если это делает для вас: -). Если вы откроете блокнот, вы увидите? и если вы попробуете это в большинстве редакторов Unicode, вы увидите‼.

Но мне нужно, чтобы это было чертой. Потому что мне нужно запустить командный файл для всех моих проектов. У путей к проектам теперь есть эта черта.

Я создаю файл с именами проектов и передаю их в свой пакетный файл.

Но когда он запускается, он ставит place вместо -.

Что я могу сделать, чтобы сохранить черту?

Примечание: У меня есть два пакетных файла. Первый запускает второй с параметрами из файла.

Мой первый может быть здесь . Второй может быть здесь . Примером входного файла может быть здесь .

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

Символ дефиса - это кодовая точка Unicode U + 2013. В кодовой странице 1252 для Windows это символ 150. Символ û обозначает код 150 в кодовой странице 437. Таким образом, похоже, что один процесс записывает файл в кодовой странице 1252, а другой читает его, используя кодовую страницу 437.

В идеале все кодовые страницы, кроме Юникода, должны быть выброшены вместе с мировыми войнами, оспой и другими реликвиями 20-го века. К сожалению, консоль Windows делает это довольно сложно.

Поскольку кодовая страница 437 является кодовой страницей консоли по умолчанию для большинства установок Windows, я подозреваю, что именно эта настройка по умолчанию вызывает эти проблемы. (Имена файлов хранятся ОС в Unicode, так что эта часть, по крайней мере, является правильной.) Поскольку кодовая страница 437 не включает в себя символ дефиса, любая система, использующая эту кодовую страницу, должна будет использовать резервный механизм для рендеринга. имена файлов, такие как знак вопроса.

Изменив кодовую страницу консоли на что-то, поддерживающее символ «тире», например 1252, эту проблему можно исправить.

Вы можете изменить эту кодовую страницу с помощью следующей команды.

chcp 1252

Эта команда, вероятно, должна быть расположена в начале вашего командного файла.

Это ужасный взлом, который будет необходим, пока вы не сможете преобразовать свою систему в нечто современное, поддерживающее Юникод сверху вниз.

Возможно, вы захотите попробовать это в Powershell, поскольку PS поддерживает Unicode.

0 голосов
/ 02 марта 2016

Я знаю, что это старый пост, но я не нашел здесь исправления, и мне потребовались некоторые поиски, прежде чем я попробовал собственное исправление.

В Блокноте я изменил свой шрифт с 'Lucinda Console' на«ТЕРМИНАЛ», и тире (-) заменены на символ (û).Я просто вручную использовал - на своей клавиатуре, используя этот шрифт, сохранил мой BAT-скрипт, и он прекрасно работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...