Перейти к содержимому

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

  • автор:

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

Для переименования файлов отметьте их и выберите опцию меню Инструменты — Переименование файлов .

Можно переименовывать файлы с использованием данных любых тегов.
Выберите необходимый тег в сетках Тип и Тег и нажмите кнопку Ввести. Наименование тега появится в Списке тегов. Повторите это необходимое количество раз. Для удаления тега из списка выберите его и нажмите кнопку Удалить.
Раскрывающийся список и поле Префикс содержат данные которые помещаются перед именем файла.
Раскрывающийся список и поле Суффикс содержат данные которые помещаются после имени файла.
Префикс и суффикс могут отсутствовать (None), быть исходным именем файла или содержать строку любых символов, которые допустимы в именах файлов.
Раскрывающийся список Символ-разделитель между тегами определяет символ, который отделяет данные различных тегов друг от друга.
РРаскрывающийся список Замена запрещённых символов определяет символ, который заменяет в имени файла символы, которые содержатся в данных тега, но не допускаются в именах файлов.
Дерево файлов и сетка Файлы содержит текущие и новые имена файлов.
Перед запуском данного окна необходимо отметить необходимые файлы на закладке Проект главного окна.
Если данные тегов различных файлов одинаковы в одном и том же каталоге и, соответственно, одинаковы имена файлов, то к новому имени файла добавляется порядковый номер в скобках.

Недопустимые символы в именах файлов:

Для переименования файлов нажмите кнопку OK. Будут переименованы все отмеченные файлы, содержащие выбранные теги.

Как переименовать файл, папку, ярлык в Windows

В Виндовс всё просто! Мы уже умеем создавать ярлыки, а также и папки создавать тоже умеем. Но жизнь всегда преподносит неожиданные сюрпризы и приходится что-то менять, чтобы жить дальше. Чаще всего при работе с файловой системой требуется не только что-то создавать, но и видоизменять. Например, нужно поменять название папки или файла. Об этом и будет рассказано ниже: как переименовать файл, папку, ярлык в Windows.

Файлы, папки, ярлыки в Windows

Итак, есть у нас папки, файлы (и даже где-то ярлыки).

Файлы, папки, ярлыки в Windows

Выделение файла в Windows для его переименования.

Для того, чтобы переименовать файл (папку или ярлык), первым делом нужно его выделить. Для этого кликаем левой кнопкой мыши по нему! И он становится выделенным! 🙂

Выделение файла в Windows для его переименования.

Переименование файла в Windows

После небольшой паузы (достаточно длинной, чтобы не получилось двойного клика) ещё раз кликаем в название файла, папки или ярлыка. И вот оно! Теперь можно исправить имя файла! Если включен режим показа расширений файлов, то выделяется имя файла до расширения. С клавиатуры вводим новое имя файла, нажимаем Enter или просто кликаем мышкой в любое другое место на мониторе, и файл переименован!

как можно исправить имя файла в Windows

Переименование папки в Windows

Таким же точно способом производится переименование папок:

переименование папок Windows

Переименование ярлыка (ссылки) в Windows

Ярлыки с такой же лёгкостью подвержены смене названий, если очень надо. Однако, в отличие от имени файла, при переименовании выделяется всё имя ярлыка целиком (что не мешает его переименовывать).

при переименовании выделяется всё имя ярлыка целиком

Запрещённые символы Windows

Важно знать, что не все символы можно использовать при названии файлов!

В Windows есть запрещённые символы в именах фалов и папок.

При попытке переименовать или создать файл/папку с запрещёнными символами будет выдано предупреждение, а переименование не произойдёт.

В Windows есть запрещённые символы в именах фалов и папок

Второй способ переименования файла в Windows

Есть более сложный (в плане того, сколько придётся елозить мышкой по столу) способ:

  • Кликаем по файлу правой кнопкой мыши.
  • Из контекстного меню выбираем «Переименовать» левой кнопкой мыши.
  • Дальше всё тоже самое: переименовываем.

контекстного меню выбираем «Переименовать»

Есть ещё более длинные способы, чтобы переименовать файл, папку, ярлык в Windows. Но, думаю, что этих двух, будет вполне достаточно. 🙂

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉

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

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

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

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

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

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

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

Z:\>badfilenames.exe * 111И~1.TXT \111и?.txt 222Е~1.TXT \222е?.txt Scanned 16 files in 8 directories Z:\>

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

Z:\>dir /x Volume in drive Z is RamDisk Volume Serial Number is 1234-5678 Directory of Z:\ 01.01.2003 00:00 TEMP 15.12.2013 23:05 52 736 BADFIL~1.EXE badfilenames.exe 08.12.2013 05:07 30 578 111И~1.TXT 111и?.txt 08.12.2013 05:06 30 201 222Е~1.TXT 222е?.txt 3 File(s) 113 515 bytes 1 Dir(s) 334 450 688 bytes free Z:\>

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

Z:\>rename 111И~1.TXT 111.txt

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

Z:\>badfilenames.exe -u z: z:\111и?.txt z:\222е?.txt Scanned 16 files in 8 directories Z:\>

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

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation

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

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

Z:\>badfilenames.exe -ur z:\*.* Renamed files: z:\111и?.txt --> z:\111й.txt Renamed files: z:\222е?.txt --> z:\222ё.txt Renamed files: z:\TEMP\111и?.txt --> z:\TEMP\111й.txt Renamed files: z:\TEMP\222е?.txt --> z:\TEMP\222ё.txt Scanned 20 files in 8 directories Z:\>badfilenames.exe -r z:\*.*

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

Z:\>badfilenames.exe -urp z:\*.* Renamed files: z:\111и?.txt --> z:\111BH.txt Renamed files: z:\222е?.txt --> z:\222YJ.txt Scanned 23 files in 8 directories Z:\>

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

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

Покинул форум
Сообщений всего: 56
Дата рег-ции: Март 2010

Помог: 0 раз(а)

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

Запрет на:
— точка в начале
— пробелы в начале и в конце
— знаки / и \
— знак %
— имя не меньше 1 символа

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

Подскажите может я что упустил?

Отправлено: 11 Июля, 2010 — 16:46:09

Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009
Откуда: Россия, Санкт-Петербург

Помог: 617 раз(а)

зачем регулярка? basename , strlen и strpos (если вам так % и точка не нравятся, хотя это полностью нормальные символы)

Отправлено: 11 Июля, 2010 — 16:54:27

Покинул форум
Сообщений всего: 56
Дата рег-ции: Март 2010

Помог: 0 раз(а)

т.е. достаточно будет проверить размер строки, отбросить слеши и пробелы в начале и в конце и этого будет достаточно для безопасного создания директории имя которой задаёт пользователь?

(Отредактировано автором: 11 Июля, 2010 — 16:54:48)

Отправлено: 11 Июля, 2010 — 17:17:34

Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009
Откуда: Россия, Санкт-Петербург

Помог: 617 раз(а)

Достаточно только убрать слэши (при том, если хостинг на *nix — то только /, а «\» путём не является). Пробелы так же никому не мешают в файловой системе, а нулевая длина — просто подсказывать пользователю, что он ошибся. Дыры в этом так же нет.

К тому же, создание директории ещё ничему не вредило.

Отправлено: 11 Июля, 2010 — 17:19:20

Покинул форум
Сообщений всего: 56
Дата рег-ции: Март 2010

Помог: 0 раз(а)

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

Отправлено: 11 Июля, 2010 — 17:51:00

Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008
Откуда: Москва

Помог: 57 раз(а)

puta пишет:
отбросить слеши и пробелы

Моё личное мнение: не надо ничего отбрасывать и вообще изменять пользовательские данные. Лучше сообщить пользователю об ошибке и не обрабатывать такие имена.

Отправлено: 12 Июля, 2010 — 21:45:54

Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009

Помог: 17 раз(а)

puta пишет:

На счёт пробелов — сталкивался с проблемой когда через фтп невозможно было удалить или переименовать файлы начинающиеся с пробелов

Видимо неправильная обработка начальных пробелов является особенностью конфигурации FTP-сервера или клиента — это же относится к файлам имя которых начинается с точки и которые трактуются как скрытые файлы и могут не показываться без добавления опции -a в команде листинга
При создании директорий устанавливайте требумого владельцева и права доступа — а также обратите внимание на права доступа к основой директории внутри которой будут создаваться вложенные — если не давать лишних широких прав доступа то пользователь не сможет навредить вам Если указанный ресурс уже существует то нужно произвести соответствующую проверку — чтобы содержимое папки не было затерто определенным образом
Также внимание следует обратить на кодировку вводимых данных — чтобы окончательная их проверка регулярными выражениями уже шла относительно той же внутренней кодировке которая будет использоваться в системных вызовах

——
Сделать можно все что угодно — нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства — http://ihost[dot]oks71[dot]ru/

Отправлено: 15 Июля, 2010 — 16:40:23

Покинул форум
Сообщений всего: 56
Дата рег-ции: Март 2010

Помог: 0 раз(а)

Ок, спасибо. Ещё один вопрос связанный с именами и файловым менеджером. Собственно проверяю теперь имя файла для двух действий: переименование файла и загрузка файла.

Нашёл вот такую функцию для удаления «лишних» символов. Вопрос в следующем, разумно ли использовать эту функцию и на выходе проверять чистый вариант с вариантом который ввёл пользователь. Если не сходятся либо выводить ошибку либо сохранять чистый вариант в зависимости от конфигурации или же стоит написать регулярку для этих вещей?

function check_filename ( $filename ) {
$result = ( substr ( $filename , 0 , 1 ) != ‘/’ && substr ( $filename , 0 , 1 ) != ‘\\’ ) ;
if ( $result ) {
for ( $i = 0 , $count = count ( $test ) ; $i < $count && $result ; $i ++ ) $result = ( strpos ( $filename , $test [ $i ] ) === false ) ; return $result ;

забыл уточнить — проверяется только имя без расширеня. расширение я проверяю по спику допустимых их соответствующего массива

(Отредактировано автором: 15 Июля, 2010 — 16:41:22)

Отправлено: 16 Июля, 2010 — 01:16:51

Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009

Помог: 17 раз(а)

puta пишет:
Ок, спасибо. Ещё один вопрос связанный с именами и файловым менеджером

Пожалуйста! В принципе самым эффективным и надежным способом в таком случае является распределение прав доступа на основе возможностей самой ОС — например за счет использования модулей динамического переназначения прав доступа

puta пишет:
Или же стоит написать регулярку для этих вещей?

Регулярные выражения и строковые функции не сильно отличаются между собой — и поэтому если у вас имеется хорошая проверочная функция на чистых строковых функциях то имеет смысл оставить ее без изменений

puta пишет:

Забыл уточнить — проверяется только имя без расширеня. расширение я проверяю по списку
допустимых их соответствующего массива

Вообще расширение файла можно не ограничивать никаким образом — ведь за счет использования shebang-строки имеется возможноть запуска программного кода из файла с любым расширением — и гораздо важнее ограничить права на исполнения файлов пользователя или же ограничить возможности и права доступа запускаемого процесса

——
Сделать можно все что угодно — нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства — http://ihost[dot]oks71[dot]ru/

Отправлено: 16 Июля, 2010 — 10:55:07

Покинул форум
Сообщений всего: 56
Дата рег-ции: Март 2010

Помог: 0 раз(а)

спасибо за расширенный ответ, на ваш взгляд предложенная мной функция в достаточной мере проверяет строку?

Отправлено: 16 Июля, 2010 — 15:04:55

Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009

Помог: 17 раз(а)

puta пишет:

Спасибо за расширенный ответ, на ваш взгляд предложенная мной функция в достаточной мере проверяет строку?

Пожалуйста! В принципе вашей функции в большинстве случаев должно хватить для прорвеки разрешенного файлового пути внутри каталога пользователя — тем не менее для повышения безопасности можно сделать функцию которая проверяет не запрещенные символы а только пропускает разрешенные Такой подход удобен тем что во-первых если вы забудете указать какой-то разрешенный символ то введенный путь будет оставаться безопасным — и во-вторых это лучше согласуется с различными кодировками Дело в том что ОС работает с консольными командами и файловыми путями в определенной кодировке — и если она вдруг будет отличается от таблицы символов в которых представлены данные внутри PHP-скрипа — то он сможет и не найти в ней запрещенные символы если пользователь успешно создаст соответствующие HTTP-заголовки и строку запроса — в то же время если оставите только разрешенные символы то при любых попытках манипуляции с кодировками запроса PHP-скрипт их попросту не пропустит

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *