Windows масово перейменувати середнє ім'я файлу через CLI?


13

Оригінальні файли

File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt

Бажаний вихід

File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt

Один файл можна легко перейменувати за допомогою ren.

ren "File 2 - Example.txt" "File 02 - Example.txt"

Чи можна було б перейменувати її за допомогою Windows renчи renameінструменту?


1
Приємна безкоштовна утиліта, щоб полегшити цей вид завдань .... bulkrenameutility.co.uk/Main_Intro.php
Moab

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

@Mawg, ти можеш робити сценарії за допомогою цих інструментів GUI?
Сабріна

Я міг би - використовуючи AutoIt - але, напевно, рекомендував би проти цього :-) Я просто задумався, чи є жорстка вимога до CLI, а тепер, здається, є. Дякую за уточнення
Мауг каже, що поверніть Моніку

Відповіді:


13

Чи можна було б перейменувати її за допомогою інструменту Windows ren або rename?

Так, але для цього потрібен пакетний файл.

test.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

приклад:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

Подальше читання


17

Цей вкладиш PowerShell розширить усі номери у назві файлу до двох місць .PadLeft(2,'0'):
(а цифри з іншими місцями залишиться недоторканими)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

на тему, загорнутий у cmd-рядок / пакетний файл:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

Щоб бути захищеним перед виконанням команд, додайте будь-яку

  • -Confirm який запитує перед тим, як зробити перейменування
  • -WhatIfякий перелічує всі перейменування, які він виконував би без параметра

просто перед останнім "


3

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


Total Commander файловий менеджер має відмінний інструмент масового перейменування. Він включає багато функцій, включаючи попередній перегляд перейменування, різні маски перейменування, регулярні вирази, перейменування файлів у всій ієрархії папок та багато іншого. У той же час, він досить простий у використанні.

Ось скріншот для демонстрації його використання:

Приклад Multi Commander Multi Rename

Крок за кроком:

  1. Завантажити та запустіть Total Commander.
  2. Увімкніть у папку з файлами для перейменування.
  3. Позначте файли для перейменування:
    • Варіант 1 - Ctrl+A для позначення всіх файлів у папці.
    • Варіант 2 - Позначте файли по одному за допомогою Spaceклавіші миші або клацання правою кнопкою миші.
    • Варіант 3 - Відкрийте «Знайти файли» ( Alt+ F7), введіть *.txtу поле «Пошук», натисніть «Почати пошук», натисніть «Подати в список списку», а потім позначте файли знаком Ctrl+ A. Використовуйте цю техніку, якщо ви хочете перейменувати файли також у внутрішні папки.
  4. Натисніть Ctrl+M щоб відкрити інструмент для перейменування.
  5. Встановіть потрібні значення в полях "Пошук" та "Замінити". Якщо ви використовуєте регулярний вираз, встановіть прапорець RegEx.
  6. Натисніть «Почати!».

-2

ren *.bat *.txtбуде працювати над перейменуванням розширень на всі відповідні файли, що зберігають іншу частину імені. Не могли б ви не зловживати цим для запуску послідовності renкоманд?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (мати справу з висячими залишками, як File 022 - Example.txt

1
Це НЕ корисно, ви перевірили, що буде робити ваша команда? 2-> 0, 22-> 02, 15-> 05.
LotPings

Ні, у мене немає ОС Windows, тому не спробував. Але я роками пам’ятаю, що REN може це зробити. Я хотів все-таки дати пропозицію.
Дуглас провів
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.