В моем примере у меня есть два файла с именами
test_20554783jsd.jpg
test_1_2021848ing.jpg

Мне нужно переименовать эти файлы после подчеркивания ("_"), и я хочу, чтобы имена понравились
test.jpg
test_1.jpg

У меня уже есть код

    @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"
    ) 

но проблема в том, что он удаляет подчеркивание ("_") с начала. Я не нуждаюсь в этом, потому что некоторые из имен файлов содержат undersore. поэтому мне нужно удалить все буквы после подчеркивания, в том числе подчеркивания формы th в конце.

Может ли кто-нибудь оптимизировать мой код
Спасибо,

1 ответ1

0

Хотя это не дает прямого ответа на ваш вопрос. Но вы можете использовать PowerShell для этого, потому что он также поддерживает использование регулярных выражений.

Я использовал следующее для достижения этой цели:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .