Эта статья рассказывает, как, зная код символа, удалить его или заменить его на другой символ в командной строке Windows или в bat файле. Эта операция может быть выполнена над текстом в файле или в выводе программы.
Содержание:
- Примеры задач по замене или удалению символа по его коду
- Возможности программы nhrt для работы с символами
- Замена символа по коду в текстовом файле или выводе другой программы
- Удаление символа по коду в текстовом файле или выводе другой программы
Примеры задач по замене или удалению символа по его коду
Такое преобразование текста может понадобиться, если требуется исправить вывод какой-то программы, чтобы скорректировать только определённый символ, который представляет собой не букву или цифру, а указывается его кодом (ASCII или Unicode).
Для примера можно взять вывод таких программ, как dir
или tasklist
. Эти программы для размера файла или объема памяти процесса используют символ-разделитель разделителем 0xFF (в 8-битной кодировке) или 0x00A0 (в 16-битной кодировке), а не обычный пробел (0x20
).
Вот как это выглядит для кодировки Unicode 16 LE (если запущено из cmd /u
):

и для 8-битной кодировки (ANSI или OEM):

При просмотре это выглядит нормально, но если для последующей обработки требуется удалить этот разделитель или заменить его на другой символ, например, на стандартный пробел, то это можно сделать одной командой в программе nhrt..
Возможности программы nhrt для работы с символами
Программа nhrt, начиная с версии 2.7, поддерживает возможность указывать символ в строке поиска по его шестнадцатиричном коду в виде ESC послендовательности:
- Запись символа с 8-битным кодом
-set:"\xHH"
- Запись символа с 16-битным кодом
-set:"\uHHHH"
Замена символа по коду
Поэтому для замены символа U+00A0 на стандартный пробел U+0020 используется команда nhrt -set:"\u00A0" -t:" "
.
Замена символа по коду в текстовом файле
Если вывод сохранен, например, в файл tasklist.txt
, то команда для замены символа по всему файлу будет следующей :
tasklist > tasklist.txt
nhrt -set:"\u00A0" -t:" " tasklist.txt
Замена символа по коду в выводе программы
Можно заменять символы сразу в выводе программы, просто направив вывод другой программы во входной поток nhrt:
tasklist | nhrt -set:"\u00a0" -t:" "
Удаление символа по коду
Для удаления символа U+00A0 используется команда nhrt -set:"\u00A0" -e
.
Удаление символа по коду в текстовом файле
Если вывод сохраняется, например, в файл tasklist.txt
, то команда для удаления символа будет следующей :
tasklist > tasklist.txt
nhrt -set:"\u00A0" -e tasklist.txt
Удаление символа по коду в выводе программы
Чтобы удалить символ сразу в выводе программы, используется такая команда::
tasklist | nhrt -set:"\u00a0" -e
Узнать больше
Программа nhrt для замены текста
Параметр set для указания простого текста с ESC последовательностями/
Можно использовать режим работы по списку замен, чтобы выполнять замены различных символов за одно выполнение команды.
Файлы для скачивания
Скачать с Яндекс диска (все скрипты, папка nhrt замена по коду символа)
Как скачать файлы? Ссылки нет
Исправил в статье