Как использовать символы кодовой страницы 932 в пакете CMD? (полная ширина солидуса)
Я пытаюсь прочитать имя папки в моем пакетном файле, которое содержит полный символ солидуса (/), который я собрал, принадлежит кодовой странице 932.
Я попытался ввести chcp 932 в мою партию, но консоль выдает сообщение о "неверной кодовой странице". Как включить эту кодовую страницу в моем пакетном файле? Использование cp1252 или utf8 оказалось неудачным.
Примечание: я в порядке с окном консоли, показывающим искаженный текст, пока фактический скрипт работает.
2 ответа
Не могли бы вы написать сценарий, используя подстановочный знак? Если папка называется folder/name
(где /
Unicode char 0xff0f), сделайте что-то вроде
for /d %%I in ("folder?name") do set "folder=%%~I"
И теперь вы можете обратиться к нему по %folder%
без необходимости изменять вашу кодовую страницу.
Чувак, DejaVu Sans Mono (мой консольный шрифт) даже не имеет глифа для этого персонажа.
Что интересно, for /F
преобразует солидус Unicode в нерасширенный /. Проверь это:
И если я использую for /f
установить переменную на выходе powershell "[char]0xff0f"
тогда делай if "%var%"=="/"
(0x2f), он оценивает истину. Есть ли for /f
как-то знаю, и / визуально похожи, или это просто совпадение? Я не понимаю, как это может быть совпадением, так как / (0xff0f) не имеет общих байтов с / (0x2f).
Ну, в конечном счете, эти эксперименты проясняют одну вещь. Вы не можете использовать for /f "delims=" %%I in ('dir /b /a:d "folder?name"')
заполнить вашу переменную, если вы chcp 65001
изменить свою кодовую страницу на Unicode. Должно быть for /d
,
Пакетные файлы.BAT и.CMD разрешают только наборы символов ANSI при записи самого файла.
Другой ответ показывает, как ввести символы UNICODE из команды, которая поддерживает необходимую кодовую страницу.
Вы можете хранить специальные символы в текстовом файле UNICODE и вводить их с помощью команд "|", "<" или FOR.