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

Я согласен. Я могу назвать множество решений на основе графического интерфейса для этого, и удивляюсь, почему настаивает на CLI
Mawg говорит восстановить Monica

@ Mawg, ты можешь делать сценарии с этими инструментами GUI?
Сабрина

Я мог бы - используя AutoIt - но, вероятно, рекомендовал бы против этого :-) Я просто подумал, существует ли жесткое требование для CLI, и теперь кажется, что оно есть. Спасибо за разъяснение
Mawg говорит восстановить Monica

Ответы:


13

Можно ли будет переименовать его с помощью Windows ren или переименовать инструмент?

Да, но для этого требуется командный файл.

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 one расширит все числа в имени файла до двух мест .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 файловый менеджер имеет отличный инструмент массового переименования. Он включает в себя множество функций, включая предварительный просмотр переименования, различные маски переименования, регулярные выражения, переименование файлов во всей иерархии папок и многое другое. В то же время, он довольно прост в использовании.

Вот скриншот для демонстрации его использования:

Пример Total Commander Multi Rename

Шаг за шагом:

  1. Скачать и запустите Total Commander.
  2. Перейдите в папку с файлами для переименования.
  3. Отметьте файлы для переименования:
    • Вариант 1 - Ctrl+A для маркировки всех файлов в папке.
    • Вариант 2 - Отметьте файлы один за другим, используя Spaceправую клавишу мыши или клавишу.
    • Вариант 3 - Откройте «Поиск файлов» ( Alt+ F7), введите *.txtв поле «Поиск», нажмите «Начать поиск», нажмите «Подача в список», затем пометьте файлы знаком Ctrl+ A. Используйте эту технику, если вы хотите переименовать файлы также во внутренних папках.
  4. Нажмите Ctrl+, Mчтобы открыть инструмент Multi-Rename.
  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.