Конечно, вы не хотите просто удалять все управляющие символы. Символы Newline и Tab также являются управляющими символами, и вы не хотите их удалять.
Я предполагаю, что ваш ^M
является возвратом каретки, а ^@
- это NULL-байт. Возврат каретки не вызывает проблем, и MORE не удаляет их. Но NULL байты могут вызвать проблемы, если ваша утилита ожидает текстовые файлы ASCII.
Ваш входной файл скорее всего UTF-16. MORE преобразует формат UTF-16 в формат ANSI (расширенный ASCII), который эффективно удаляет NULL-байты. Он также преобразует значения, отличные от ASCII, в расширенные символы ASCII в десятичном значении 128 - 255 байтов. Я считаю, что он использует значение вашей активной кодовой страницы (CHCP), чтобы выяснить, какие символы отображают где, но я не уверен.
Вы должны знать о некоторых дополнительных проблемах.
MORE преобразует все символы Tab в ряд пробелов, и вы не можете контролировать, сколько пространства (оно изменяется в зависимости от текущей позиции в строке).
MORE всегда будет завершать каждую строку с помощью \ r \ n (возврат каретки и подача строки).
MORE также удаляет двухбайтную спецификацию в начале файла, если она существует. Спецификация указывает формат UTF-16. Но MORE не требует 2-байтового индикатора спецификации, он будет конвертировать UTF-16 в ANSI независимо.
Наконец-то MORE может вешать бесконечно, если ваш файл превышает 64K строк.
Если БОЛЬШЕ работает для вас, чем это возможно.
Еще один вариант заключается в использовании TYPE, который будет также преобразовать UTF-16 в ANSI:
type "yourFile.txt" >"newFile.txt"
TYPE определенно отображает не-ASCII коды, основанные на активной кодовой страницы.
Есть некоторые различия с тем, как TYPE преобразует против MORE
одно преимущество TYPE он не выполняет преобразование символов табуляции в пробелы.
Другим преимуществом является то, что он не будет висеть с большими файлами.
Другое отличие (возможно, хорошее, может быть, плохое) заключается в том, что он не добавит терминатор линии к линии, у которой ее еще нет.
Потенциальный недостаток TYPE заключается в том, что он не преобразует UTF-16 в ANSI, если на входе отсутствует спецификация.
Там нет команды в CMD/Win8 делать то, что вы пытаетесь сделать (что звучит как фильтр неконтролируемый альфа-числовых байты из двоичного файла) ... Side Примечание: Вы бы гораздо лучше найти читатель для формата файла, который вы пытаетесь просканировать через ... –
Пожалуйста, прочитайте [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и разместите вопрос, чтобы мы могли вам помочь. – Vedda
Я сообщаю метод, который работает. Я использую пакет для связи с одновременно запущенным .exe с ограниченными параметрами вывода файлов. – svengineer99