Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Alexander_88, Вот вариант
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251
 
	Set "BoxIn=Z:\Soft_In"
	Set "Kword=start"
	Set "Reg=^%Kword%[0-9][0-9][0-9][0-9]\..*"
	Set /A M=4

	Set "Mask=*.*"
	Set /A Max=25	
	
	Set /A Num=1000000
	Set /A MMax=%Max%+%Num%
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir "%BoxIn%\%Kword%*.*" /B /O:N /A:-D ^|findstr /I /R /C:"%Reg%"`) DO (
		Call :RenNNN "%BoxIn%" "%%a" "%Kword%" %M% %MMax% ||Exit /B 1
	)

	Set /A Num=1000000
	Set /A MMax=%Max%+%Num%
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /O:N /A:-D`) DO (
		Call :RenNNN "%BoxIn%" "%%a" "%Kword%" %M% %MMax% ||Exit /B 1 
	)
Pause
Exit /B

:RenNNN
	Set /A Num+=1
	If %Num% GTR %5 Exit /B 1 
	Call Set "NNum=%%Num:~-%4%%"
	2>nul Ren "%~1\%~2" "%~3%NNum%%~x2" ||GoTo :RenNNN
Exit /B 0
Как это организовано:
В первом For просматриваем файлы startNNNN.* и перенумеровываем их вподряд start0001, start0002 ...
Во втором For переименовываем все остальные файлы по указанной маске в start c последующими номерами
Если этого не нужно, этот for надо или заремить, или убрать

Есть возможность ограничить число переименований файлов (Set /A Max=25)
Если этого не надо, можно задать заведомо большое число, или заремить If %Num% GTR %5 Exit /B 1
То же для NNNNstart.*
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251
 
	Set "BoxIn=Z:\Soft_In"
	Set "Kword=start"
	Set "Reg=^[0-9][0-9][0-9][0-9]%Kword%\..*"
	Set /A M=4

	Set "Mask=*.*"
	Set /A Max=25	
	
	Set /A Num=1000000
	Set /A MMax=%Max%+%Num%
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir "%BoxIn%\%Kword%*.*" /B /A:-D ^|findstr /I /R /C:"%Reg%"`) DO (
		Call :RenNNN "%BoxIn%" "%%a" "%Kword%" %M% %MMax% ||Exit /B 1
	)

	Set /A Num=1000000
	Set /A MMax=%Max%+%Num%
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO (
		Call :RenNNN "%BoxIn%" "%%a" "%Kword%" %M% %MMax% ||Exit /B 1 
	)
Pause
Exit /B

:RenNNN
	Set /A Num+=1
	If %Num% GTR %5 Exit /B 1 
	Call Set "NNum=%%Num:~-%4%%"
	2>nul Ren "%~1\%~2" "%NNum%%~3%~x2" ||GoTo :RenNNN
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-07-2019 в 14:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:20, 07-07-2019 | #15