Jak zmienić nazwy wielu obrazów przy użyciu pliku .bat z pewnymi warunkami?

0

W moim przykładzie mam dwa pliki, których nazwy są
test_20554783jsd.jpg
test_1_2021848ing.jpg

Muszę zmienić nazwy tych plików po podkreśleniu („_”) i chcę, aby imiona się podobały
test.jpg
test_1.jpg

Mam już kod

    @echo off
    for /F "delims=" %%I in ('dir /A-D /B *_* 2^>nul') do (
    for /F "tokens=1 delims=_ " %%J in ("%%~nI") do ren "%%I" "%%J%%~xI"
    ) 

ale problem polega na tym, że usuwa podkreślenie („_”) od początku. Nie potrzebuję tego, ponieważ niektóre nazwy plików zawierają podszycie. więc muszę usunąć wszystkie litery po podkreśleniu, łącznie ze znakiem podkreślenia.

Czy każdy może zoptymalizować mój kod
dzięki,

Shriram
źródło
Zamiast tego użyj powershell
hjpotter92

Odpowiedzi:

0

Chociaż nie odpowiada bezpośrednio na twoje pytanie. Ale możesz użyć do tego PowerShell, ponieważ obsługuje on również używanie wyrażeń regularnych.

Użyłem tego, aby to osiągnąć:

Get-ChildItem . -file -Filter "*_*.jpg" | Rename-Item -newname { $_.name -replace "_[^_]+$", ".jpg"}

Sandeep
źródło
Aby niepotrzebnie nie próbować zmienić nazwy wszystko pliki, powinieneś używać tylko plików zawierających podkreślenie.
LotPings