Обратите внимание, что у этого скрипта есть несколько ограничений, например, он предназначен только для нумерации от 001 до 999 (вам нужно внести изменения в нескольких местах, чтобы расширить диапазон), и ограничение в том, как он определяет, имеет ли префикс ужебыли добавленыНо это должно начать вас ...
@ECHO OFF
IF %1.==. ECHO Source path not provided & PAUSE & EXIT/B
IF NOT EXIST %1 ECHO Source directory does not exist & PAUSE & EXIT/B
SETLOCAL
REM This script only supports numerical prefixes in the range 001 to 999
SET P=1000
FOR /R %1 %%I IN (.) DO CALL:0 "%%I"
PAUSE
EXIT/B
:0
REM Uncomment below to restart numbering from 1 for each subfolder
::SET P=1000
FOR %%I IN (%1\*) DO CALL:1 "%%I" || EXIT/B
EXIT/B
:1
IF %P%==1999 ECHO Overflow: Too many files found (More than 999) & EXIT/B 1
REM Additional test to see if prefix may have been added already. This test is not very accurate
SET T=%~N1
CALL:2 %T:~0,1% || CALL:2 %T:~1,1% || CALL:2 %T:~2,1% || IF %T:~3,1%==- EXIT/B 0
REM END: Additional test
SET/A P=P+1
REN %1 "%P:~1%-%~NX1"
EXIT/B 0
:2
REM Make ERRORLEVEL 0, else 1 if %1 is digit
CD.
FOR /L %%I IN (0,1,9) DO IF %1==%%I EXIT/B 1