Вот простые пакетные сценарии, которые выполняют запрошенную вами задачу:
@echo off
setlocal EnableDelayedExpansion
for /f "delims=. tokens=1-3" %%l in ('dir /a-d /b') do (
set FILENAME=%%l
set EXTENSION=%%m
set PARTNUMBER=%%n
if defined PARTNUMBER (
ren ".\!FILENAME!.!EXTENSION!.!PARTNUMBER!" "!FILENAME!_!PARTNUMBER!.!EXTENSION!
) else (
echo The task cannot be accomplished on file !FILENAME!.!EXTENSION!.
)
)
pause
Этот скрипт выполняет for
цикл, который разлагает имя каждого файла, помещенного в папку, в которой запускается пакетный файл; он использует .
символ как разделитель для различных жетонов. Затем, если имя файла содержит три разных токена, оно переименовывается, как в примере с вашим вопросом; в противном случае файл не переименовывается. Это условие позволяет исключить из этой операции общие файлы с простым именем и расширением. К сожалению, я не уверен, что 7-Zip сможет распаковать исходный файл после этого переименования.