Как переименовать файл с запрещенными символами

от admin

Утилита для поиска файлов с недопустимыми символами в имени

Консольная утилита badfilenames.zip предназначена для поиска и автоматического переименования файлов, содержащих следующие недопустимые символы:

< (символ меньше)
> (символ больше)
: (двоеточие)
" (двойная кавычка)
/ (прямой слеш)
\ (обратный слеш)
| (вертикальная черта)
? (знак вопроса)
* (звёздочка)
и символы с кодами, лежащими в диапазоне 0..31

Откуда же берутся файлы, содержащие недопустимые символы в именах? Ведь средствами операционной системы Windows создание таких файлов невозможно — они запрещены на уровне API.

Существуют несколько способов, позволяющих обойти этот запрет — логический диск может быть примонтирован к другой операционной системе, например, Linux, в которой нет запрета на такие символы в именах файлов, или например, диск может быть сетевой. Так же при распаковке какого-либо архива возможно попадание файлов с недопустимыми символами на логический диск.

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

Утилита badfilenames.zip позволяет просканировать жёсткий диск и вывести список найденных файлов, содержащих недопустимые символы в именах. Для этого в качестве параметра утилиты необходимо указать путь, по которому будет происходить сканирование, можно так же использовать поиск по маске:

Здесь на экран выводится короткие имена файлов в формате 8.3. В этом же формате содержимое директории выводятся системной командой dir с параметром /x:

Используя короткое имя файла, его можно переименовать командой rename:

По умолчанию сканирование осуществляется в ASCII режиме, но если использовать ключ -u, то программа будет работать в режиме юникода:

Для чего введён этот юникод — режим? Дело в том, что в операционных системах Windows XP, Windows 7 и Windows 8 имеется возможность отключения создания коротких имён на разделе NTFS, и соответственно программа не сможет воспользоваться короткими именами для переименования. За это отвечает ключ регистра

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation

Если NtfsDisable8dot3NameCreation = 1, то при записи на раздел с файловой системой NTFS короткое имя файла не будет создано. Отключение этого параметра (NtfsDisable8dot3NameCreation = 0) позволяет исправить положение на будущее, но уже записанные на диск файлы всё равно не будут иметь коротких имён.

Автоматическое переименование выполняется с ключом -r или -ur (-urp) для юникодного режима. Пример использования утилиты:

Здесь ключ -ur предписывает переименование из юникода в ASCII, использую кодовую страницу, установленную по умолчанию. Если кодировка кодовой страницы настроена неправильно, то можно использовать ключ -urp, здесь все юникод-символы заменяются на заглавные английские буквы A..Z:

Такой режим (ключ -urp) рекомендуется использовать в том случае, если переименовать файл с нечитаемыми символами в имени другим путём невозможно.

Запрещенные символы в именах каталогов Windows и Linux

Системы Windows и Linux позволяют создавать и называть файлы и каталоги в соответствии с вашими требованиями, но некоторые символы нельзя использовать для названия каталогов и файлов. В этой статье мы узнаем о запрещенных символах в именах каталогов Windows и Linux.

Запрещенные символы в именах каталогов Windows и Linux

Некоторые символы являются печатными символами ASCII, а некоторые — непечатными. Вот символы, которые не поддерживаются для имен файлов и каталогов.

Читать:
Почему после перезагрузки компьютера пропадает интернет соединение

Linux/Unix

Windows

Запрещенные непечатаемые символы

Здесь перечислены непечатаемые символы, которые нельзя использовать в качестве имен файлов или имен каталогов.

Здесь перечислены непечатаемые символы, которые нельзя использовать в качестве имен файлов или имен каталогов.

Linux/Unix

  • 0 (байт NULL)

Windows

  • 0-31 (управляющие символы ASCII)

Запрещенные (зарезервированные) имена

Помимо вышеперечисленных символов, существуют также определенные зарезервированные имена файлов, которые нельзя использовать в Windows, как с расширением, так и без него.

  • CON, PRN, AUX, NUL
  • COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
  • LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9

Заключение

Также помните, что Windows не различает символы верхнего и нижнего регистра в именах файлов и каталогов, поэтому если вы попытаетесь назвать один файл как a.txt, а другой файл в том же каталоге как A.txt, это не позволит вам этого сделать.

Наконец, следует отметить, что в Windows имена файлов и каталогов не могут заканчиваться пробельными символами.

В этой статье мы узнали о запрещенных символах для имен файлов и каталогов в Windows и Linux.

Замена запрещённых символов в имени файла или папки

При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку — если в имени файла (папки) присутствуют запрещённые символы.

Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания:

Ещё одна функция — полезная для вывода в прогресс-бар длинного текста (имени файла):

  • 33705 просмотров

Комментарии

Я эту формулу использую для формирования id, отлично подходит, но ВНИМАНИЕ ВОПРОС! Что дописать, чтобы оставляло только одно подчеркивание. Сразу скажу, что макрос меня не интересует. Нашел штуку убирает все мульти символы в один, но это мне не подходит, мне нужно чтобы убирало только мульти подчеркивания «____» в «_». Заранее благодарен.

Огромное спасибо за функцию, очень помогла. Наташа.

Макросы в Excel не имеют ничего общего со скриптами в браузерах.
(совсем другой язык, код будет совершенно другой)

Обратитесь на форумы, где пишут браузерные скрипты, — вам подскажут.

а как это оформить как скрипт в firefox — хроме ?

Решил немного доработать функцию Replace_symbols. В ней замена всегда происходит на «_», мне же потребовалось производить иную замену.
Не бог весть что — но возможно кому-ни будь поможет.
Вот код:

Переименование файлов с кривыми именами

На работе юзер принёс флешку. На ней много файлов, в именах которых недопустимые символы: <, > и другое. На флешке (FAT32) эти файлы лежат, а при попытке скопировать на винт (NTFS) ругается на недопустимые имена.

Вопрос: как пакетно заменить недопустимые символы, например, символом подчёркивания?

Для Windows нашёл утилиту badfilenames.exe, к-я должна исправлять файлы так:

Но она вообще ничего не делает.
Вся надежда на Linux и на вас, седые строгие админы.

Похожие статьи