3

У меня есть куча файлов с похожими ключевыми словами, как

computer-stock-photo.jpg 
computer-stock-picture.jpg
computer-picture.jpg

То, что я хочу сделать, это суффикс последовательных двухзначных чисел, таких как

computer-stock-photo-01.jpg, 
computer-stock-picture-02.jpg, 
computer-picture-03.jpg

Также пакетный скрипт должен работать с любым расширением, таким как jpg или png.

Сценарий, который я попробовал:

@echo off
setlocal disableDelayedExpansion
set "chars=0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg') do call :renameFile "%%F"
exit /b

:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
  set /a I=!random!%%36
  for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg

Вышеприведенный скрипт работает только для jpg и добавляет случайные числа, а не последовательные.

2 ответа2

1

Я думаю, что вы захотите опубликовать этот вопрос в переполнении стека, если вы хотите, чтобы кто-то помог вам написать сценарий для ваших целей. Чтобы следовать плану этого форума, я предоставлю вам ссылку на программу Bulk Rename Utility. Это было рекомендовано в прошлом другими пользователями Stack Exchange и, кажется, соответствует вашим критериям.

http://www.bulkrenameutility.co.uk/Main_Intro.php

1

Переименование файла с суффиксом 01 01 03 04 и т.д.

Выбросьте свой неподходящий сценарий. Вам не нужны случайные числа, и он не обрабатывает .png файлы.

Я написал новый скрипт с нуля, так как это было проще, чем пытаться исправить свой сломанный скрипт.

Используйте следующий пакетный файл:

@echo off
setlocal enabledelayedexpansion
rem initialise counter
set /a "x=1"
rem process jpg and png files
for /f "usebackq tokens=*" %%i in (`dir /b *.jpg *.png`) do (
  rem split into name and extension
  set _name=%%~ni
  set _ext=%%~xi
  rem pad the counter to 2 digits
  set "y=0!x!"
  set "y=!y:~-2!"
  rem do the rename
  ren "%%i" "!_name!-!y!!_ext!"
  increment counter
  set /a "x+=1"
  )
endlocal

Ограничения:

  • Обрабатывает только .jpg и .png в текущем рабочем каталоге.
  • Обрабатывает только до 99 файлов.

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • dir - Показать список файлов и подпапок.
  • enabledelayedexpansion - отложенное расширение приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа.
  • for /f - Циклическая команда против результатов другой команды.
  • параметры - аргумент командной строки (или параметр) - это любое значение, переданное в пакетный скрипт.
  • set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.
  • переменные - извлечение части переменной (подстроки).

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