1

Тема: перейменувати групу файлів по масці

Доброго дня, спільното.
Підкажіть будь-ласка, як можна перейменувати групу файлів в одній папці. а точніше видалити певці символи в імен файлів
до прикладу, є такі файли

11111-81.jpg
11112-82.jpg
11113-86.jpg
11114-79.jpg
11115-(81).jpeg
11116-(81).jpeg
11117-90.jpeg

чи можливо командою rename зробити ось так:
11111.jpg
11112.jpg
11113.jpg
11114.jpg
11115.jpeg
11116.jpeg
11117.jpeg
пробую ось так

rename "*-???.*" "*////.*"

пише що помилка

заздалегідь дякую за відповідь

2

Re: перейменувати групу файлів по масці

Знаю що в Microsoft PowerToys є інструмент для масового перейменування
https://learn.microsoft.com/windows/powertoys/powerrename

Подякували: colin200x, mikeos2

3 Востаннє редагувалося colin200x (Вчора 16:13:05)

Re: перейменувати групу файлів по масці

так є, я вже ним корустуюсь, яле не розумію як в ньому забрати лишні символи іменно в кінці імені файлу. бо файлів декілька десятків тисяч.

4 Востаннє редагувалося javascriptIsLife (Вчора 23:47:32)

Re: перейменувати групу файлів по масці

Написав програмку на VBScript. Не перейменовує файли в підкаталогах. Змінює назву файлів таким чином що видаляється рядок символів що починається з - і закінчується . По задумці має виходити так: 11115-(81)-aa13.jpeg -> 11115.jpeg. Запускати на свій страх. Файли копіюються з новими назвами з одного каталогу до іншого.

  • Копіюєш текст нижче в текстовий редактор і зберігаєш в файлі з будь–якою назвою.

  • В каталозі зі збереженим файлов відриваєш вікно cmd.exe і пишеш там cscript.exe massrname.vbs /folder:"d:\mass" /d:"c:\dd" та тиснеш клавішу Enter. massrename.vbs треба замінити на назву файлу в якому було збережоно наведений нижче текст а d:\mass на шлях до каталогу з файлами які треба перейменувати. c:\dd замінюш на шлях до каталогу куди будуть копіюватися файли з новими назвами. Шляхи до каталогів мають бути в лапках.

Dim objRegExp
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
    .IgnoreCase = True
    .Pattern = "-.+\."
End With

Dim obj_shell
Set obj_shell = CreateObject("WScript.Shell")

Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")

Dim oFolder

Set oFolder = oFSO.GetFolder(WScript.Arguments.Named("folder"))

Dim d
d = WScript.Arguments.Named("d")

Dim oMatches
For Each oFile In oFolder.Files
        Set oMatches = objRegExp.execute(oFile.Name)
        If oMatches.count > 0 Then
            Dim m
            m = d & "\" & Replace(ofile.Name, oMatches.item(0), ".")
            WScript.Echo ofile.Name & " -> " & m
            oFSO.CopyFile ofile.Path, m
        End If
Next
' Beep
WScript.StdOut.Write Chr(7)
Подякували: colin200x1

5 Востаннє редагувалося mikeos (Сьогодні 01:36:24)

Re: перейменувати групу файлів по масці

Думаю найпростіше через PowerToys.
Також можна в PowerShell за допомогою Get-ChildItem + Rename-Item + регулярні вирази.
Наприклад:

Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '^(\d+)(-.+)(\..+)$', '$1$3' }

Або рекурсивної і з фільтром по файлах:

Get-ChildItem -Recurse -File | Where { $_.Name -match '^(\d+)(-.+)(\.jpe?g)$' } | Rename-Item -NewName { $_.Name -replace '^(\d+)(-.+)(\..+)$', '$1$3' }

Не перевіряв, але можна поекспериментувати )

Подякували: colin200x1

6

Re: перейменувати групу файлів по масці

всім дякую за допомогу, попробую скрипт і команди!