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,
batch
rename
batch-rename
Shriram
źródło
źródło
Odpowiedzi:
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"}
źródło