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


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.