В Windows, когда я создаю сплит-файлы .zip объемом менее 20 МБ, с помощью такой команды:

7z a name.zip files\* -v20M

Я получаю один или несколько файлов с именем name.zip.001 , name.zip.002 и т.д.

Мне нужно переименовать все name.zip.00N в другую схему именования, которая называется name_index.zip вместо name.zip.index:

name_001.zip
name_002.zip
name_003.zip

Есть ли простой способ сделать это в файле .bat ?

1 ответ1

1

Вот простые пакетные сценарии, которые выполняют запрошенную вами задачу:

@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 сможет распаковать исходный файл после этого переименования.

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