Можно ли использовать расширенные символы ASCII в файле BAT? - PullRequest
3 голосов
/ 24 марта 2012

У меня есть куча динамически создаваемых * .BAT файлов.Эти BAT-файлы используются для создания папок на сервере.Всего одна строка в каждом BAT-файле, например: MKDIR \ NetworkShare \ abc \ 123

Эта строка "abc \ 123" из базы данных.

В течение некоторого времени она работает нормально для созданиятысячи подпапок по требованию, до сегодняшнего дня он прекратил создавать специальную подпапку, которая имеет «закрывающую одинарную кавычку» ( Alt + 0146 , если печатать из командной строки dos) в строке.1010 * Я провел некоторое исследование и обнаружил, что эта «близкая одинарная кавычка» является расширенным символом ASCII.Он не может быть сохранен должным образом в файле ANSI BAT (в конечном итоге, как что-то еще).Я пробовал UNICODE и UTF-8 BAT-файл, но он не работает.

Единственное близкое решение - это то, что я попробовал бинарный редактор, чтобы убедиться, что это код 146, но код 146 дает мне Æ (ALT-146) не «закрывать одинарные кавычки» ( Alt + 0146 ).

Я знаю, что могу вручную вводить специальные символы в командной строке DOS (используя клавиатуру Alt + ) .Но есть ли способ правильно сохранить эту "закрытую одинарную кавычку" ( Alt + 0146 ) в файле BAT, чтобы я мог выполнять их динамически?

Хост-систематакое Windows Server 2003 на английском и американском языках.

Ответы [ 2 ]

5 голосов
/ 24 марта 2012

Спасибо за этот CHCP 65001 трюк. Это приводит к правильному решению:

Я предпринял следующие шаги для решения проблемы:

+++++++++++++++++++

Подготовка текстового файла BAT (вручную или динамически)

+++++++++++++++++++

(1) Сделать первую строку пустой (это необходимо, поскольку в первой строке скрыты символы для текстового файла UTF-8)

(2) Поместите CHCP 65001 в качестве второй строки

(3) главная строка здесь: MKDIR \ networkshare \ abc (правильная одинарная кавычка -> это специальный расширенный символ ASCII) \ 123

(4) убедитесь, что файл BAT сохранен как UTF-8

+++++++++++++++++++

Теперь это трюк с CMD.EXE

+++++++++++++++++++

(1) Запустить cmd.exe

(2) свойство черного экрана open cmd.exe

(3) убедитесь, что черный экранный шрифт имеет «истинный тип», то есть «TT». По умолчанию это растровый шрифт, который не может правильно обрабатывать специальный код ascii. (это ключевой шаг)

(4) теперь я могу запустить свою BAT для правильной обработки этих расширенных символов ASCII.

3 голосов
/ 24 марта 2012

Попробуйте изменить кодовую страницу вашего пакетного файла на UTF-8: вставьте эту строку вверху вашего пакетного файла и сохраните файл как UTF-8:

chcp 65001

Будьте осторожны: создание папок с буквами, отличными от ASCII, может привести к поломке некоторых программ, которые могут полагаться на более старый API библиотек, или просто предположить, что все имена папок и файлов являются ASCII.

...