Ответы:
Я знаю, что в своем названии вы говорите «in dos», но у меня сложилось впечатление, что вы просто ищете способ сделать это и задаетесь вопросом, является ли это лучшим способом.
Абсолютно лучшим инструментом, который я нашел для этого, является Bulk Rename Utility .
Это не инструмент командной строки, но у них есть версия для командной строки, если вы действительно хотите использовать его таким образом.
Я много использовал версию GUI, и она очень мощная, очень быстрая и чрезвычайно простая в использовании.
Ох, и это бесплатно для личного использования.
Небольшой скрипт PowerShell:
$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }
В сочетании с более сложными регулярными выражениями это может выглядеть примерно так:
ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }
Что превращает такие вещи, как «01 - Beginning.mp3» в «Начало - 01.mp3».
Используйте -WhatIf
параметр on, Rename-Item
чтобы проверить переименования перед их выдачей.
... -replace '\d+ - ',''
, Кроме того, я считаю, что первый лучше, просто убрав начало с помощью регулярных выражений. Хотя я полагаю, что в начале выражения следует указывать якорь ^, чтобы он совпадал только с именами, начинающимися с цифр.
-replace
может иметь только один аргумент с правой стороны, в этом случае второй является неявно пустой строкой.
Если вы действительно хотите использовать командную строку Windows (если вы не хотите что-то скачивать), вы можете сделать это следующим образом:
dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l
Первая строка выводит список файлов в файл с именем fileList.txt. Вторая строка разделяет каждое из имен в списке на 3 части: #, «-» и остальную часть имени. Для каждого из них он выполняет команду переименования.
for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
AntRenamer позволяет довольно легко определить шаблон переименования; Есть много уже подготовленных (и это дает предварительный просмотр действий):
Бесплатно для личного и коммерческого использования.
старая школа:
Вы можете сделать DIR и перенаправить вывод в файл, как в DIR * .TXT> TEMP.BAT
Затем используйте редактор, чтобы достать то, что вам не нужно, и измените нужные вам части. Добавьте "@echo off" в качестве верхней строки, сохраните его и запустите.
Другой вариант: Massive File Renamer
Это позволяет легко переименовывать несколько файлов и расширений файлов . Это очень быстро и просто!
Для опытных пользователей и разработчиков можно использовать регулярные выражения .
Посмотрите это в действии:
Я использую инструмент Multi-переименования Total Commander (Ctrl + M) для таких вещей. Их полезный инструмент, который слишком много для подсчета, прост в использовании, а также может при необходимости использовать регулярные выражения и шаблоны. О, и это, очевидно, дает вам предварительный просмотр, прежде чем вносить какие-либо изменения.
Это третий или четвертый вопрос, на который я ответил, порекомендовав Total Commander ... Я должен получить комиссию от них ;-)
Инструмент, которым я доволен, - это ReNamer . Он также поддерживает сохранение правил переименования, что было полезно для меня, поскольку я много раз делал одни и те же переименования.
Ниже приведен пример того, как удалить текст перед первой чертой, но есть множество других правил, которые вы можете определить.
Я использовал Free Commander Portable (бесплатную версию), чтобы добиться хорошего эффекта:
Для опытных пользователей и разработчиков, я бы предложил RegexRenamer .
Pro-х:
Con-х:
Самый простой способ - использовать Rename Master .
Вот решение для командной строки - Java-программа, которую я написал специально, чтобы упростить работу с «шаблонами» в именах файлов. Это бесплатно и с открытым исходным кодом, так что не стесняйтесь изменять его:
RenameWand
http://renamewand.sourceforge.net/
Некоторые соответствующие примеры использования:
Отбросьте все до имени "-"
в имени файла:
java -jar RenameWand.jar "<a> - <b>" "<b>"
Добавить 3-значный номер к имени файла, сортируя по времени последнего изменения:
java -jar RenameWand.jar "<a>" "<3|#FT> <a>"
Переставьте части имени файла и измените регистр:
java -jar RenameWand.jar "<album> - <artist> - <song>.<ext>"
"<artist.upper> <album.title> - <song>.<ext.lower>"
Я обнаружил RenPhoric около месяца назад. Superb. И это бесплатно .
Нет сложного интерфейса, и я быстро смог переименовать именно так, как я хотел. Регулярное выражение способно. С тех пор больше ничего не использовал.
Как и @zdan выше, я сделал это с помощью командной строки (используя «cmd.exe» в Windows). В моем конкретном случае потребовалось немного усилий, но небольшое исследование помогло решить проблему.
Как и zdan, я выводил список в TXT-файл, а затем использовал tokens
и delims
для соответствующего переименования файлов. В моем случае я начал со списка файлов, названных так:
name-01-02-2012.csv
Я хотел, чтобы часть даты файла была в порядке y / m / d, с частью «name» в конце, чтобы она выглядела так:
2012-01-02-name.csv
Для этого я использовал следующий код. Обратите внимание, что при этом способе учитываются ВСЕ части имени файла, включая расширение «.csv». Это обмануло меня в первый раз.
dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m
Это tokens
«части» имени файла, delims
это разделители. Обратите внимание, что в моем случае у меня было 2 разделителя (тире и точка).
Лично меня не волнует приложение «Массовое переименование». Как уже упоминали другие, графический интерфейс ужасен и не очень интуитивно понятен. Благодаря небольшому исследованию и простому кодированию, эти вещи можно сделать гораздо быстрее и эффективнее.
Забавное имя и инструмент командной строки, очень мощный, очень быстрый и чрезвычайно простой в использовании. «Найти и заменить текст» FART http://fart-it.sourceforge.net/ РАБОТАЕТ БОЛЬШОЙ! Можно переименовать слова в текстовых файлах тоже.
Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]
Options:
-h --help Show this help message (ignores other options)
-q --quiet Suppress output to stdio / stderr
-V --verbose Show more information
-r --recursive Process sub-folders recursively
-c --count Only show filenames, match counts and totals
-i --ignore-case Case insensitive text comparison
-v --invert Print lines NOT containing the find string
-n --line-number Print line number before each line (1-based)
-w --word Match whole word (uses C syntax, like grep)
-f --filename Find (and replace) filename instead of contents
-B --binary Also search (and replace) in binary files (CAUTION)
-C --c-style Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
--cvs Skip cvs dirs; execute "cvs edit" before changing files
-a --adapt Adapt the case of replace_string to found string
-b --backup Make a backup of each changed file
-p --preview Do not change the files but print the changes
-f
вариант, как указано.
Multi Rename Script - это альтернатива инструменту Total Commanders Multi Rename с открытым исходным кодом, который вы можете использовать с помощью скрипта. Он может использовать плагины TC для метаданных.
@ эхо выключено setlocal enabledelayedexpansion установить X = 5 установить FOLDER_PATH =. pushd% FOLDER_PATH% для %% f в (*) сделать, если %% f neq% ~ nx0 ( установить "filename = %% ~ nf" установить "filename =! filename: ~% X%!" ren "%% f" "! filename! %% ~ xf" ) POPD
сохранить это в командном файле и запустить
set /p "X=Enter the value for X: "
Я использую Blackboard для администрирования курсов в университете. Когда я загружаю задание массово (в Blackboard щелкните верхнюю часть столбца оценок, затем «Загрузка файла подборки» Blackboard добавляет кучу дополнительных вещей к имени файла - часто делает имя файла слишком длинным, чтобы быть действительным в Windows.
Вот как они выглядят:
Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx
И это то, что я хотел
studentname.docx
Поэтому я использовал подход, предложенный @zdan и @ gtr1971, открыв окно командной строки для папки с файлами внутри (CMD.EXE). Затем выполните эту команду, чтобы поместить все имена файлов в документ.
dir /b >filelist.txt
Отредактируйте документ и удалите имена папок и т. Д.
Используйте эту команду для замены добавленного в Blackboard имени файла только именем пользователя и расширением файла.
for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n
Надеюсь, это поможет кому-то еще.
Вот еще одна простая программа под названием File Attribute Changer, которую вы можете использовать для переименования файлов. Это портативная программа, поэтому вы можете носить ее на USB-накопителе.
Я разработал гибридную утилиту командной строки JScript / batch под названием JREN.BAT, которая может переименовывать файлы или папки, выполняя поиск и замену регулярных выражений по именам. Это чистый скрипт, который будет работать на любом компьютере с Windows XP и выше. Полная документация встроена в скрипт.
Если предположить, что JREN.BAT находится в вашем текущем каталоге или, что еще лучше, где-то на вашем пути, тогда ваша задача переименования становится тривиальной.
jren "^\d+[ -]+(.+)\.txt$" "$1" /i
или же
jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"
Есть много опций, включая /S
опцию, которая рекурсивно выполняет переименование в подкаталогах.
Если вам нужна серьезная сила и вы хотите раскошелиться ... PowerGrep - это один из самых мощных и универсальных инструментов на рынке ... вы можете переименовать практически все с помощью PowerGrep ... даже двоичный поиск и замена ... его создал RegEx Guru, Ян Гойваертс .