Як я можу масово перейменувати файли?


126

У мене є купа файлів, названих з малюнком, 99 - DescriptiveName.txtі я хотів би видалити номер спереду, щоб у мене був DescriptiveName.txt.

Як я можу це зробити? Чи можу я це зробити з командного рядка чи є утиліта, яка може це зробити?

Відповіді:


94

Я знаю, що у вашій назві ви говорите "в досі", але я створюю враження, що ви просто шукаєте спосіб це зробити і цікавитесь, чи це найкращий спосіб.

Абсолютний найкращий інструмент, який я знайшов для цього, це Bulk Rename Utility .

Групова перейменування утиліта

Це не інструмент командного рядка, але вони мають версію командного рядка, якщо ви дійсно хочете використовувати його таким чином.

Я багато використовував версію GUI, і вона дуже потужна, дуже швидка і надзвичайно проста у використанні.

О, і це БЕЗКОШТОВНО для особистого користування.


На жаль, інструмент не є комерційним для використання :(
— AntonK

Тому я сказав, що це безкоштовно для особистого користування.
— Jim McKeeth

2
Це надшвидкий інструмент. Це вирішило мою проблему з 6 000 файлів за лічені секунди, використовуючи декілька логік пошуку та заміни. Це як використання Notepad ++, але редагування тисяч файлів. Чудове рішення, дякую!
— Арахіс

59

Невеликий сценарій PowerShell:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

У поєднанні зі складнішими регулярними виразами це може стати чимось на зразок:

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

Що перетворює такі речі, як '01 - початок.mp3 'у' початок - 01.mp3 '.

Використовуйте -WhatIfпараметр увімкнено, Rename-Itemщоб перевірити перейменування, перш ніж їх видавати.


1
@sysrqb, будь ласка, вивчіть трохи більше.
— Joey

Для заміни не потрібні два рядкові вирази? У другого є два, у першого немає. ... -replace '\d+ - ',''. Крім того, я вважаю, що перший краще, просто зніміть початок за допомогою регексу. Хоча я вважаю, що ви повинні включити ^ якор на початку виразу, щоб він відповідав лише іменам, що починаються з чисел.
— Xalorous

1
@Xalorous: Ну, можна просто спробувати. -replaceможе мати лише один аргумент з правого боку, у цьому випадку другий неявно порожній рядок.
— Джої

Це врятувало мене .. Утиліта масового перейменування просто виходить з ладу, і я спробував так багато інших рішень. Це набагато краще для людей, яким комфортно користуватися регексом. Дуже дякую !!
— Inkh Su Tesou

24

Якщо ви дійсно хочете використовувати командний рядок Windows (якщо ви не хочете щось завантажити), ви можете зробити це так:

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

Перший рядок виводить список файлів у файл, який називається fileList.txt. Другий рядок розділяє кожне з імен у списку на 3 частини, #, "-" та решту імен. Для кожного з них виконується команда перейменування.


2
Видаліть перший рядок, щоб спростити його і зробіть:for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

Я знаю, що це по-старому, але це все ще тверда відповідь - лише% l (% L) має бути% k (% K) [приріст лексем від% i (% I), тому я, J, K ...]
— Дональд Берд

24

AntRenamer дозволяє досить легко визначити шаблон перейменування; вже багато підготовлених (і це дає попередній перегляд дій):

AntRenamer

Безкоштовно для особистого та комерційного використання.


19

стара школа:

Ви можете зробити DIR і перенаправити вихід у файл, як у DIR * .TXT> TEMP.BAT

Потім скористайтеся редактором, щоб вийняти те, що вам не потрібно, і змінити потрібні вам частини. Додати верхній рядок "@echo off", зберегти його та запустити.


Я отримав посилання на цю сторінку зі старого шкільного доктора в цьому: dostips.com/DosCommandIndex.htm ; Дивовижно, що ти можеш зробити із (хорошим?) Старим DOS!
— nik

16

Ще один варіант: Massive File Renamer

Це дозволяє легко перейменувати кілька файлів і розширень . Це дуже швидко і просто!

Для досвідчених користувачів і розробників можна використовувати регулярні вирази .

Дивіться це в дії:

введіть тут опис зображення


1
Btw, як ми можемо вибрати його для відкриття всіх файлів у папках? У мене є коренева папка з приблизно 50 підпапками (рекурсивно) та декількома файлами всередині них.
— Pacerier

1
@Pacerier Я думаю, що вибір програми Java не дозволяє цього. У мене виникла ідея дозволити вибір папки і рекурсивний пошук можна включити. Зауважу це і додамо його у майбутньому випуску!
— IvanRF

13

Я використовую інструмент мультиперейменування Total Commander (ctrl + M) для таких речей. Їх корисний інструмент, один із занадто багатьох для підрахунку, простий у використанні, а також може використовувати необхідні регулярні вирази та шаблони. О, і це очевидно дає попередній перегляд перед внесенням будь-яких змін.

Це третє чи четверте питання, на які я відповів, рекомендуючи Total Commander ... я повинен отримувати від них комісію ;-)


11

Інструментом, яким я задоволений, є ReNamer . Він також підтримує збереження правил перейменування, що було мені корисно, оскільки я багато разів роблю ті самі перейменування.

Нижче наводиться приклад того, як видалити текст до першого тире, але є безліч інших правил, які ви можете визначити.

введіть тут опис зображення


5

Для цього я використовував Free Commander Portable (безкоштовно):

  1. Виберіть або Перейдіть до файлів або каталогів, щоб перейменувати
  2. Натисніть [Ctrl-M] (або Файл> Перейменування)
  3. заповніть поля так, як це має сенс для вашої обставини
  4. переконайтеся, що попередній перегляд показує, що ви очікуєте
  5. Ідіть!

4

Для досвідчених користувачів і розробників я б запропонував RegexRenamer .

Скріншот RegexRenamer

Професійні:

  • Дуже простий інтерфейс користувача;
  • Регулярні вирази, з якими знайомі розробники;
  • GPLv2;

Кон:

  • Це не командний рядок! :)

Не вдалося змусити його працювати рекурсивно для всіх підпапок вибраної папки!
— Luckylooke


3

Ось рішення в командному рядку --- програма 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>"

3

Я відкрив RenPhoric близько місяця тому. Прекрасно. І це безкоштовно .

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


2

Мені подобається WildRename Cylog . Він потужний, але простий у використанні та має безліч функцій:

  1. швидко
  2. струнні маніпуляції
  3. лічильники
  4. макетів
  5. регулярні вирази
  6. підміна
  7. конвертація випадків
  8. лісозаготівля
  9. моделювання (показуйте результати, не застосовуючи їх фактично)

введіть тут опис зображення


2

Як і @zdan вище, я робив це за допомогою командного рядка (використовуючи "cmd.exe" у Windows). У моєму конкретному випадку знадобилося трохи повороту, але невелике дослідження вирішило це.

Як і zdan, я виводжу список у файл TXT, потім використовуюсь tokensі delimsперейменую файли відповідно. У моєму випадку я почав зі списку таких файлів:

name-01-02-2012.csv

Я хотів, щоб частина дати файлу була в порядку у / м / д, з частиною "ім'я" в кінці, щоб вона читалася так:

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 роздільники (тире та крапка).

Мене особисто не цікавить додаток "Масове перейменування". Як вже згадували інші, графічний інтерфейс - жорстокий і не дуже інтуїтивний. За допомогою невеликого дослідження та простого кодування ці речі можна зробити набагато ефективніше та швидше.


2

Забавне ім’я та інструмент командного рядка дуже потужний, дуже швидкий та надзвичайно простий у використанні. "Знайти та замінити текст" FART http://fart-it.sourceforge.net/ РОБОТИ ВЕЛИКИЙ! Ви також можете перейменовувати слова у файлах txt.

ВИКОРИСТАННЯ

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

Ще кілька деталей? Чи перейменовує файли ?
— vonbrand

Так, -fваріант, як перераховано.
— користувач1016274

2

Сценарій перейменування - це альтернатива відкритому коду альтернативі інструменту «Total Commanders Multi Rename», який можна було б керувати за допомогою сценарію. Він може використовувати плагіни TC для інформації метаданих.

https://code.google.com/p/multi-rename-script/ http://multi-rename-script.googlecode.com/svn/trunk/docs/res/MRS.PNG


2
@echo off
setlocal enabledeyedex розширення
множина X = 5
встановити FOLDER_PATH =.
pushd% FOLDER_PATH%
для %% f в (*) робити, якщо %% f neq% ~ nx0 (
    встановити "ім'я файлу = %% ~ nf"
    встановити "ім'я файлу =! ім'я файлу: ~% X%!"
    ren "%% f" "! ім'я файлу! %% ~ xf"
)
попд

збережіть це у пакетному файлі та запустіть


Це добре, але як я можу зробити X змінною (пройти як параметр)?
— Кангкан

@Kangkan так:set /p "X=Enter the value for X: "
— Kidquick,

1

Я використовую Blackboard для адміністрування курсів в університеті. Коли я завантажую завдання масово (на Blackboard клацніть верхній стовпчик з оцінкою, потім «Завантажте файл завантаження». Blackboard додає купу зайвих речей до імені файлу -often, що робить ім'я файлу занадто довгим, щоб бути дійсним для 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

Сподіваюся, що це допомагає і комусь іншому.



1

Я розробив гібридну утиліту командного рядка JScript / batch під назвою JREN.BAT, яка може перейменовувати файли чи папки, виконуючи звичайний пошук виразів та замінювати їх назви. Це чистий сценарій, який запускається на будь-якій машині Windows від XP вперед. Повна документація вбудована в сценарій.

Якщо припустити, що JREN.BAT знаходиться у вашому поточному каталозі, а ще краще - десь у вашому шляху, то ваше завдання перейменування стає тривіальним.

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

або

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

Існує багато варіантів, включаючи /Sопцію, яка рекурсивно виконує перейменування в підкаталогах.


0

Якщо вам потрібна серйозна потужність і ви готові викласти гроші ... PowerGrep - це один з найпотужніших і універсальних інструментів на ринку ... ви можете перейменовувати майже все що завгодно в PowerGrep ... навіть двійковий пошук і заміна ... його створив гур RegEx, Ян Гойвартс .

введіть тут опис зображення


Ця утиліта шалено дорога ...
— Wizard79

Ви можете користуватися ним безкоштовно на невизначений термін ... однак, варто того ... я використовую його постійно.
— Едді Б
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.