Удалить первые символы в названии файлов
Мне нужно создать файл с именем файла, например :>? , возможно ли это как-то? Windows это останавливает.
У каждого ограниченного символа есть другое значение или использование, поэтому, если имя файла или папки действительно содержит их, это может привести к возникновению Bad Things ™. Не возражаете, если я спрошу, почему вы пытаетесь это сделать?
@ DMA57361, когда я делал это несколько лет назад, я проверял некоторые вещи. Если я правильно помню, результаты были забавными, но я не помню ничего особенно плохого . Самое большее, я просто не мог получить к ним доступ. (Хотя я полагаю, что это может вызвать проблемы, если, например, у вас есть файлы с именами a , b и вы a>b type a>b
@moorecast, когда я делал это несколько лет назад, я создавал файлы / каталоги с фиктивными именами, а затем использовал редактор дисков, чтобы вручную устанавливать имена в записях каталога. Конечно, это было на томе FAT32, так что это было очень легко. Это было бы немного сложнее на томе NTFS.
Mind if I ask why you are trying to do this? Может быть, реализовать (плохую) защиту от копирования ?
К сожалению, вы не можете использовать зарезервированные символы при создании папок или файлов, поскольку они являются частью системных функций.
То, что я рекомендую вам сделать, это просмотреть Character Map приложение - вы можете запустить и набрать charmap .
отсюда вы можете найти альтернативные символы, которые выглядят одинаково, например:
(скопируйте и вставьте их, вы увидите, что они разные)
Вместо косой черты / - вы можете использовать символ деления ∕
Вместо двоеточия : - вы можете использовать модификатор буквы двоеточия ꞉
@Arjan - только через командную строку .. даже тогда вы можете использовать клавишу табуляции для автозаполнения.
Я использовал этот трюк для определенных ситуаций, например, когда мне нужно поставить вопрос в имени файла ( почему Microsoft оставил вопросительный знак зарезервированным? ఠ_ఠ) К сожалению, мне пришлось прекратить использовать любые символы не ASCII, потому что они вызывают проблемы с такими вещами, как программы дефрагментации, которые по какой-то причине кажутся неспособными перемещать файлы с символами Unicode в именах. ಠ ~ ಠ
Если подумать, этот ответ на самом деле тоже не отвечает на вопрос. Есть ответы ниже , что делать , так что это тоже должно быть просто комментарий.
Вы можете загрузиться с диска Linux (например, Knoppix ) и смонтировать раздел NTFS.
Linux имеет гораздо меньше ограничений на имена файлов, и позволит вам создавать такие имена (я пробовал).
Некоторые операционные системы запрещают отображение определенных символов в именах файлов: (Ресурс из Википедии )
\ backslash Также используется как разделитель компонентов имени пути в MS-DOS, OS / 2 и Windows (нет разницы между косой чертой и обратной косой чертой); разрешено в Unix имени файла
? знак вопроса, используемый в качестве подстановочного знака в Unix, Windows и AmigaOS; отмечает один символ Разрешено в Unix имена файлов
* звездочка используется в качестве подстановочного знака в Unix, MS-DOS, RT-11, VMS и Windows. Отмечает любую последовательность символов (Unix, Windows, более поздние версии MS-DOS) или любую последовательность символов в базовом имени или расширении (таким образом, « . » В ранних версиях MS-DOS означает «все файлы». Допускается в именах файлов Unix ,
: двоеточие используется для определения точки монтирования / диска в Windows; используется для определения виртуального устройства или физического устройства, такого как накопитель на AmigaOS, RT-11 и VMS; используется в качестве разделителя пути в классической Mac OS. Удваивается после имени в VMS, указывает имя узла DECnet (эквивалентно имени хоста NetBIOS (сеть Windows), которому предшествует "\".)
| вертикальная черта обозначает программную конвейеризацию в Unix и Windows; разрешено в именах файлов Unix
"кавычка используется для обозначения начала и конца имен файлов, содержащих пробелы в Windows
> больше, чем используется для перенаправления вывода, разрешено в именах файлов Unix
, период разрешен, но последнее вхождение будет интерпретироваться как разделитель расширений в VMS, MS-DOS и Windows. В других ОС, обычно рассматриваемых как часть имени файла, допускается более одной полной остановки.
Конфигурация компьютера | |
Процессор: Intel Core i3-4370 3800 MHz | |
Материнская плата: Asus B85M-E | |
Память: Kingston ValueRAM 2x4GB DDR3 PC3-12800 | |
HDD: SSD Crucial BX500 240GB, WD Blue 1Tb | |
Видеокарта: Встройка в проц | |
Звук: Встройка | |
Блок питания: PowerMan 450W | |
CD/DVD: Нет и не нужен | |
Монитор: LG Flatron Wide L204WT | |
Ноутбук/нетбук: Нет, но хотелось бы | |
ОС: Microsoft Windows 10 Pro x64 | |
Прочее: QCyber Dominator TKL, Logitech G102 |
Доброе время суток. Я не силен в CMD/BAT, поэтому прошу помощи. Нужно удалить у всех файлов в папке первые 2 символа в имени не затрагивая расширение файла. У меня имеется готовый батник, но только на удаление последних 2 символов.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Конфигурация компьютера | |
Процессор: Intel Core i3-4370 3800 MHz | |
Материнская плата: Asus B85M-E | |
Память: Kingston ValueRAM 2x4GB DDR3 PC3-12800 | |
HDD: SSD Crucial BX500 240GB, WD Blue 1Tb | |
Видеокарта: Встройка в проц | |
Звук: Встройка | |
Блок питания: PowerMan 450W | |
CD/DVD: Нет и не нужен | |
Монитор: LG Flatron Wide L204WT | |
Ноутбук/нетбук: Нет, но хотелось бы | |
ОС: Microsoft Windows 10 Pro x64 | |
Прочее: QCyber Dominator TKL, Logitech G102 |
habib2302, ну и замените количество хоть на два (как у вас в тексте), хоть на четыре (как у вас в заголовке темы).
Конфигурация компьютера | |
Процессор: Intel Core i3-4370 3800 MHz | |
Материнская плата: Asus B85M-E | |
Память: Kingston ValueRAM 2x4GB DDR3 PC3-12800 | |
HDD: SSD Crucial BX500 240GB, WD Blue 1Tb | |
Видеокарта: Встройка в проц | |
Звук: Встройка | |
Блок питания: PowerMan 450W | |
CD/DVD: Нет и не нужен | |
Монитор: LG Flatron Wide L204WT | |
Ноутбук/нетбук: Нет, но хотелось бы | |
ОС: Microsoft Windows 10 Pro x64 | |
Прочее: QCyber Dominator TKL, Logitech G102 |
Конфигурация компьютера | |
Процессор: Intel(R) Core(TM) i3 CPU M 370 2.40GHz, ядер: 2, логических процессоров: 4 | |
Память: 8,00 ГБ | |
ОС: Windows 10 Pro x64 |
habib2302,
когда копипастите откуда-то следите за пробелами в конце строк - очень распространенная ошибка причина и имя файла и путь когда в переменной надо обязательно брать в парные кавычки
habib2302, в любом случае — делать rename файлов внутри цикла перебора тех же самых файлов по for — не есть правильно. Делайте разбор по for /f для команды dir /b — и вот тогда смело переименовывайте: сначала выполнится dir /b, и только потом произойдёт первое переименование.
Update: припоздал.
На время отладки строку @echo off надо убирать. И смотреть, где ошибка (ошибки).
Да, и у вас заодно от имени батника отрежутся символы.
Кстати. А что вы будете делать, если получите одинаковые имена переименованных файлов?
Последний раз редактировалось mwz, 06-04-2019 в 23:11 .
ИМХО, указывать имена файлов *.* опрометчиво. При повторном возможно случайном запуске батника тупо повторно отрежутся символы. Подозреваю, можно указать маску, чтобы повторно файлы не обрабатывались.
Да, и у вас заодно от имени батника отрежутся символы. » |
ИМХО, скверная политика запускать батник из той же папки, где обрабатываемые файлы. Поэтому, для обрабатываемых файлов лучше указывать полный путь с маской, и, (но это не нужно, если не располагать батник вместе с файлами) можно приделать батнику атрибут "скрытый".
До кучи (число отрезаемых символов тоже задаётся, а то завтра кто-то захочет отрезать 2 или 5 символов)
Или, как вариант, перед обрезанием контролировать длину, чтобы не отрезать повторно: возможно, обрабатываемые файлы имеют некое стандартное по длине имя. Или всё-таки на каждое переименование организовать запрос. Но это слегка другая песТня, излагайте!
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
При работе в командной строке администраторы часто сталкиваются с необходимостью что-то сделать с определенным файлом: удалить, переместить, скопировать. При выполнении подобных задач зачастую приходится обращаться к файлам по имени, что может быть затруднительно, поскольку в именах файлов могут встречаться самые разные символы. Даже те, которых нет на клавиатуре. В этом плане работу может облегчить файловый менеджер, в котором файл можно просто выделить и совершить с ним нужное действие. Но для тех, кто привык работать исключительно в командной строке, предлагаются следующие способы.
В качестве shell-оболочки рассмотрим bash, как самую используемую. А в качестве операции над файлами рассмотрим удаление, как самую деструктивную.
Ситуации могут быть разными. В текущей директории могут быть файлы, которые нужно удалить вместе с теми, которые нужно оставить. Имена у них могут быть самыми разными. Причем первые от последних могут отличаться только одним каким-нибудь заковыристым символом.
В названии файла есть служебный символ bash
Самый простой случай. Для удаления файлов, содержащих в своем названии служебные символы вроде пробелов, кавычек, двойных кавычек, звездочек, обратные кавычки и др. можно заэкранировать обратным слешем или использовать одинарные кавычки:
С помощью одинарных кавычек нельзя удалить файл, в названии которого есть одинарная кавычка, даже заэкранировав ее.
С полным списком служебных символов и механизмом экранирования в bash можно ознакомиться в man bash. Раздел QUOTING.
Имя файла начинается с дефиса
Удалить файл, начинающийся с дефиса простым экранированием не получится, и команда rm будет воспринимать дефис, как начало своего аргумента. Решить проблему довольно просто:
Удаляем по wildcard
Если удаление файлов попадает под wildcard-маску, то можно удалить всю группу файлов:
Файлы с управляющим символом в названии
В названии файла может встречаться управляющий ASCII-символ, такой как перевод строки (\n), табуляция (\t), backspace (\b). Это символы с ASCII-кодами менее 0x20, а также символы DELETE и ESC. Для удаления таких файлов подходит конструкция:
Другим способом удаления таких файлов являяется ввод управляющего символа с клавиатуры. Для этого нужно воспользоваться комбинацией клавиш, которая экранирует следующий введенный символ, тем самым запрещая системе обрабатывать его. Как правило, эта комбинация CTRL+V. Точно убедиться в этом можно с помощью команды stty -a, посмотрев на параметр lnext. Удалим файл, содержащий символ ESC:
Удаление файлов с символами utf8
Если имя файла содержит символ в кодировке utf8, который мы не можем набрать на клавиатуре, то удалить такой файл можно выделением его мышкой, копированием в буфер обмена и последующей вставкой на ввод команды rm. Главное условие состоит в том, что наш терминал должен работать в кодировке utf8. Кодировка выставляется в настройках терминала. Будь то xterm, putty или брутальный linux tty.
Перекодировка имени файла
Подозревая, что имя файла находится в кодировке, отличной от кодировки терминала, мы можем выполнить перекодирование всех файлов в текущей директории. В результате файлы с битой кодировкой будут перекодированы, а файлы с ascii-символами изменений не претерпят. Существенный плюс этого способа – приведение всех файлов в читабельный вид.
Как видно, чтобы осуществить правильное перекодирование нужно знать две кодировки: предполагаемую кодировку файла и кодировку нашего терминала. Наиболее трудно распознать предполагаемую кодировку файла по непонятным символам. Есть замечательная табличка
Также можно воспользоваться сторонними программами, которые попытаются распознать кодировку автоматически. Например, онлайн-декодер Лебедева.
Если вы встретили такие символы в примонтированном media-носителе или смонтированном разделе Windows, не спешите ничего перекодировать. Возможно, вы просто указали неправильные опции монтирования.
Автокомплит
В случае, если в директории название требуемого файла начинается уникально, и это название можно однозначно сформировать автокомплитом, то это довольно простой способ удалить файл:
Удаляем файл через меню выбора
Если мы дошли сюда, дело плохо. Попробуем удалить конкретный файл, составив для этого меню выбора. В итоге, все что нам останется сделать – это выбрать нужный пункт меню вместо ввода имени файла. Для этого нам нужно запрограммировать действие, которое будет происходить с файлом или файлами после ввода нами нужных пунктов меню.
Удаление по номеру inode
Удалить файл можно по его номеру inode. Номер inode уникально идентифицирует файл в файловой системе. Узнать номер inode можно с помощью команды ls, а удалить – с помощью find. Недостаток этого способа, такой же, как у предыдущего. Неудобно, в случае большого числа файлов.
Удаление по hex-коду
И нельзя не упомянуть один суровый метод. Удаление по hex-кодам. Суть такова: мы узнаем hex-коды всех байтов в имени файла, а затем удаляем файл, указывая вместо имени hex-коды.
создание сайтов, заработок в сети, раскрутка, программирование
В Украине война. Путинские войска нас бомбят.
Часто возникает такая ситуация, что нужно массово переименовать файлы. Будь это название или расширение файла. Иногда нужно убрать часть текста из названия (например, адрес сайта или фирмы). Если файлов всего несколько, то ничего страшного. А что делать когда файлов 50, 100 или тысяча?
Есть несколько решений как быстро переименовать много файлов: командной строчкой или кучей программ. Одно из самых удобных решений — это переименовать файлы в папке по шаблону тоталкомандер.
Как переименовать файлы в тотал коммандер
Чтобы переименовать много файлов нужно зайти в папку, где находяться файлы. Выделить те файлы, которые будем переименовывать.
Потом нажимаем CTRL+M для группового переименовывания и выскочит вот такое окошко.
В этом окне и производим все основные операции.
Как удалить часть текста во всех названиях файлов
Как заменить символы в названиях файлов через totalcommander
Для замены символов на какие-то буквы или цифры повторяем предыдущий блок. Только в поле Заменить на пишите то, на что заменяем. Например, заменяем в названиях файлов символы [, < на пробелы. В поле найти по очереди ставим эти символы, а в Заменить не забываем нажать пробел.
Справочник по групповому переименовыванию файлов через totalcommander
В программе тоталкомандер есть мощный встроенный функционал, и его частью как раз и является групповое переименовывание файлов. Вы можете задавать так называемую маску для массового редактирования.
[N] — вставьте этот код в поле имени для сохранения старого названия файла.
[f][N] — напишите вот так, если хотите чтобы все названия были с заглавной буквы.
[N1] — первый символ в названии файла. Можно использовать в маске, например, при замене символов.
[N2-4] — три символа из старого названия, с второго по четвертый.
[N3-] — все символы названия, начиная с третьей буквы.
[N-3] — третий символ с конца имени файла.
[N1,5] — пять символов после первой буквы.
[E] — расширение файла. (можно писать и в названии, если оно нужно.)
Счетчики. Хочется отдельно отметить полезную функцию счетчиков при переименовывании файлов.
Например, нам нужно проставить порядок файлов в начале названия или в конце (или в средине, использую маску).
[C:2] — простой счетчик, который нумерует файлы по очереди двухзначным числом. (01, 02…77,78)
[C:3] — тоже самое, только цифра уже трехзначная (001,002,003…)
[C1+1:2] — расширенный вариант счетчика. Первая единица — с какой цифры начинать, вторая единица — шаг счетчика, после двоеточия — двухзначное число. То есть эта конструкция будет добавлять 01,02,03… к каждому файлу по очереди. Если написать [C5+2:3], то счетчик начинает работать 005 с шагом 2 (007,009,011…)
Даты и время. Также в имя файла можно добавить [t] — время, [d] — дату, [D] — день, [M] — месяц, [Y] — год.
Если хотите конкретные примеры пакетного переименовывания файлов — не стесняйтесь, пишите!
По сути, у меня есть музыкальный альбом, и я хочу удалить имя автора из всех mp3-файлов вместо того, чтобы делать это вручную. В Windows 7 Ultimate есть функция, которая может сделать это для меня?
Вы также можете попробовать использовать PowerShell, мощный инструмент командной строки Windows. Вы бы запустили эту команду:
Полная команда:
Анализируя это:
get-childitem *.mp3
В этом списке перечислены все файлы, имена которых заканчиваются на .mp3 . Затем они передаются к следующей команде с | оператором.
foreach < rename-item $_ $_.Name.Replace("Radiohead -", "") >
Это заменяет все экземпляры Radiohead - ничем, что обозначается "" , эффективно стирая слово из всех файлов в каталоге.
Вы также можете изменить get-childitem *.mp3 на get-childitem - это переименует все файлы в каталоге, а не только файлы, имена которых заканчиваются на .mp3 .
@paulkon представляет любой элемент, который был передан из предыдущей команды. В этом случае он представляет каждый элемент, так как он получается по foreach циклу. Далее $_. следует точечная нотация для доступа к свойствам / методам / элементам. Получает $_.Name доступ к свойству Name каждого файла, который передается по каналу get-childitem .
Спасибо за это решение . работал шарм. Я сижу здесь, интересно, как вы можете изменить файлы в подпапках тоже? например, как -R работает на Linux. Я глава Linux.
Не забудьте добавить -LiteralPath, если в имени есть такие вещи, как квадратные скобки. Кроме этого тывма за этот ответ! Проголосовал
Забудьте о сложных сценариях для этого.
rename это очень старая и никогда не завершенная команда Если вы не используете его должным образом, результат может вас удивить.
Например , чтобы удалить префикс abcd из abcd1.txt , abcd2.txt , и abcd3.txt т.д., чтобы получить 1.txt , 2.txt , 3.txt просто использовать
Вам нужно / столько же, сколько и начальных символов, которые вы хотите удалить.
Делайте двойные кавычки для обоих аргументов.
быстро и просто, мне это нравится. Можете ли вы объяснить, как это работает? Это косая черта или папка без имени?
Нет конкретного правила. Это так, как есть. / может быть частью пути unc, поэтому он не совпадает с: <> |. Это, вероятно, рассматривается как некий невидимый путь.
Фантастическое открытие. Очень странно, что источник и цель должны быть заключены в кавычки, иначе получит The syntax of the command is incorrect ошибку. Мне любопытно, была ли эта техника когда-либо размещена где-либо до этого ответа? Мне нужно обновить мой Как команда Windows RENAME интерпретирует подстановочные знаки? Q & A, хотя технически, / они не работают как символы подстановки.
Не удаляет "." в именах файлов. например, dbo.table1.sql, dbo.table2.sql, переименовывает их в .table1.sql, .table2.sql
Это может сработать.
Создайте командный файл следующим образом:
Раскрытие: мой ответ был отредактирован, поэтому он больше не является точной копией комментария, на который я ссылался.
Попробуйте это программное обеспечение
Bulk Rename Utility - это бесплатная программа для переименования файлов для Windows. Утилита Bulk Rename позволяет легко переименовывать файлы и целые папки на основе чрезвычайно гибких критериев. Добавить метки даты / времени, заменить цифры, вставить текст, преобразовать регистр, добавить авто-номера, обрабатывать папки и подпапки . и многое другое! Быстро переименуйте несколько файлов, в соответствии со многими гибкими критериями. Переименовывать файлы разными способами: добавлять, заменять, вставлять текст в имена файлов. Конвертировать регистр, добавить цифры. Удалить или изменить расширения файлов. Проверьте подробный предварительный просмотр перед переименованием. Переименуйте фотографии, используя метаданные EXIF (т. Е. «Дата создания снимка», «Разрешение» и другую информацию, встроенную во все файлы фотографий JPG). Переименуйте свои праздничные фотографии из бессмысленного dsc1790.jpg в NewYork1.jpg в одно мгновение. Переименуйте файлы MP3, используя теги ID3 (иначе Переименование тега MP3 ID3). Изменить метки времени создания и изменения файлов. Это бесплатно. Простота в установке. Скачайте и начните переименовывать ваши файлы сейчас!
Благодарю. Я видел это в поиске Google, но нужно быть осторожным с установкой случайного программного обеспечения. учитывая ваше мнение и рекомендации, я установил его, и это невероятно. Не возиться с PowerShell и т. Д. Я программист и люблю Trim, функции регулярных выражений. Это работает лучше, чем рекламируется. Я очень рекомендую это тоже. UPS!
ReNamer может сделать это. В ReNamer просто добавьте правило «remove», подобное этому (правило «delete» также будет работать):
Затем перетащите файлы или папку, содержащую файлы, которые вы хотите переименовать, в свое окно (или используйте кнопки «Добавить файлы / папки»), затем проверьте предварительный просмотр и после проверки нажмите «Переименовать»:
Спасибо за рекомендацию этого! У меня были некоторые проблемы с такими вещами, как Bulk Rename, и мне кажется, что у них совершенно интуитивно понятный графический интерфейс.
Поскольку вы имеете дело с музыкальными файлами, забудьте о командном файле и утилитах для переименования ваших файлов. Используйте специальную программу, такую как Mp3tag, которая абсолютно необходима, если вы действительно хотите организовать свою музыку.
Основные особенности
Пакетное редактирование тегов Запись ID3v1.1, ID3v2.3, ID3v2.4, MP4, WMA, APEv2 тегов и Vorbis Комментарии к нескольким файлам одновременно.
Поддержка обложек Загрузите и добавьте обложки альбомов в свои файлы и сделайте свою библиотеку еще более яркой.
Импорт из Amazon, Discogs, freedb, MusicBrainz Сохраняйте набор текста и импортируйте теги из онлайн-баз данных, таких как Amazon, Discogs, freedb, MusicBrainz и других.
Заменить символы или слова Заменить строки в тегах и именах файлов (с поддержкой регулярных выражений).
Создавайте плейлисты автоматически Создавайте и управляйте плейлистами автоматически во время редактирования.
Переименование файлов из тегов Переименование файлов на основе информации тегов и импорт тегов из имен файлов.
Экспорт в HTML, RTF, CSV. Создавайте симпатичные отчеты и списки своей коллекции на основе пользовательских шаблонов.
Полная поддержка Unicode. Пользовательский интерфейс и теги полностью совместимы с Unicode.
Помимо этих основных функций Mp3tag предлагает множество других функций и функций, начиная от пакетного экспорта встроенных обложек альбомов, заканчивая поддержкой специфических для iTunes тегов, таких как настройки типа мультимедиа или телешоу, до объединения нескольких действий в группы, которые можно применять с помощью одним щелчком мыши.
Читайте также: