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

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

Ветеран


Contributor


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

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


CMD1
Код: Выделить весь код
@Echo Off
cls
	Set /A N=0
	Call :NFiles "Z:\Soft_In\start\????start.*" "[0-9][0-9][0-9][0-9]start\..*" "N" "M1" 
	Call :NFiles "Z:\Soft_In\start\start????.*" "start[0-9][0-9][0-9][0-9]\..*" "N" "M2"
	Call :NFiles "Z:\Soft_In\start\start1????.*" "start1[0-9][0-9][0-9][0-9]\..*" "N" "M3"
	Echo %N%
Pause
Exit /B

:NFiles
	SetLocal
	Set /A N=0
	Set "M1="	
	Set "MN="
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir %1 /B /O:N /A:-D ^|findstr /I /R /C:"^%~2"`) DO (
		Call Set /A N+=1
		If Not Defined M1 Call Set "M1=%%a"
		Call Set "MN=%%a"		 	
	)
	If %N%==0 (Set "M1=%~nx1" &Set "MN=%~nx1")
	Echo %1 - %M1% -^> %MN% = %N% 
	EndLocal &(Set /A %~3+=%N%) &(Set %~4=%1 - %M1% -^^^> %MN% = %N%) 
Exit /B
CMD2
Код: Выделить весь код
@Echo Off
cls
	Set /A N=0
	Call :NFiles "Z:\Soft_In\start\????start.*" "[0-9][0-9][0-9][0-9]start\..*" 4 "N" "M1" 
	Call :NFiles "Z:\Soft_In\start\start????.*" "start[0-9][0-9][0-9][0-9]\..*" 4 "N" "M2"
	Call :NFiles "Z:\Soft_In\start\stagrt????.*" "stagrt[0-9][0-9][0-9][0-9]\..*" 4 "N" "M3"
	Echo %N%
Pause
Exit /B

:NFiles
	SetLocal
	Set /A N=0
	Set "Reg=%~2"
	If "%Reg:~0,5%"=="[0-9]" (Set /A Reg=1) Else (Set /A Reg=2)
	Set "M1="	
	Set "MN="
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir %1 /B /O:N /A:-D ^|findstr /I /R /C:"^%~2"`) DO (
		Call Set /A N+=1
		If Not Defined M1 Call Set "M1=%%~na"
		Call Set "MN=%%~na"		 	
	)
	If %N%==0 (Set "M1=%~n1" &Set "MN=%~n1")
	If %Reg%==1 (Call Set "M1=%%M1:~0,%3%%") Else (Call Set "M1=%%M1:~-%3%%")
	If %Reg%==1 (Call Set "MN=%%MN:~0,%3%%") Else (Call Set "MN=%%MN:~-%3%%")
	Echo %1 - %M1% -^> %MN% = %N% 
	EndLocal &(Set /A %~4+=%N%) &(Set %~5=%1 - %M1% -^^^> %MN% = %N%) 
Exit /B
CMD3
Код: Выделить весь код
@Echo Off
cls
	Set /A N=0
	Call :NFiles "Z:\Soft_In\start\????start.*" "[0-9][0-9][0-9][0-9]start\..*" 4 "N" "M1" 
	Call :NFiles "Z:\Soft_In\start\start????.*" "start[0-9][0-9][0-9][0-9]\..*" 4 "N" "M2"
	Call :NFiles "Z:\Soft_In\start\st22art????.*" "st22art[0-9][0-9][0-9][0-9]\..*" 4 "N" "M3"
	Echo %N%
Pause
Exit /B

:NFiles
	SetLocal
	Set /A N=0
	Set "Reg=%~2"
	If "%Reg:~0,5%"=="[0-9]" (Set /A Reg=1) Else (Set /A Reg=2)
	Set "M1="	
	Set "MN="
	FOR /F "usebackq delims=" %%a IN (`2^>nul Dir %1 /B /O:N /A:-D ^|findstr /I /R /C:"^%~2"`) DO (
		Call Set /A N+=1
		If Not Defined M1 Call Set "M1=%%~na"
		Call Set "MN=%%~na"		 	
	)
	If %N%==0 (Set "M1=%~n1" &Set "MN=%~n1")
	If %Reg%==1 (
		Call Set "NM1=%%M1:~%3%%"
		Call Set "M1=%%M1:~0,%3%%"
		Call Set "MN=%%MN:~0,%3%%"
	) Else (
		Call Set "NM1=%%M1:~0,-%3%%"
		Call Set "M1=%%M1:~-%3%%"
		Call Set "MN=%%MN:~-%3%%"
	)
	Echo %~dp1%M1% - %MN% %NM1% %N% 
	EndLocal &(Set /A %~4+=%N%) &(Set %~5=%~dp1%M1% - %MN% %NM1% %N%) 
Exit /B
Варианты отличаются способом представления выходной информации. Третий - как у Вас.

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


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

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

Отправлено: 12:24, 08-07-2019 | #2