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

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

Ветеран


Contributor


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

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


YuS_2,
Цитата YuS_2:
а если их 350 или не дай бог 3500 ? Вопрос риторический, если что... »
Я ориентировался на Choice, так как в задании
Цитата Alex S:
Скрипт ... выводит список найденных файлов .... Затем используя ":choice" выбирается один ...»
Рискую впасть во флуд, но представить монитор с 350 (тем более 3500) строками мне трудновато. Поэтому, если без Choice
Для произвольного количества найденных файлов при ограничении количества файлов, отображаемых на экране за одну порцию (имитация скроллинга)
Здесь сделано по 20 штук, можно изменить, лишь бы на экран помещалось
Код: Выделить весь код
@Echo Off
Cls
	Set "BootFile=%SYSTEMDRIVE%\Work\Image\sources"
	Set "Mask=Boot*.wim"
	
	Call :FileName "%BootFile%\%Mask%" 20 "FName" ||Exit /B 1

	Echo %FName%
pause
GoTo :Eof

:FileName
SetLocal
	Set /A N=0
       	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /b /a:-D "%~1"`) DO Set /A N+=1 &Call Set "@%%N%%=%%f"

       	If %N%==0 (Echo !!! Files not found "%~1" &Pause &EndLocal &Exit /B 2)
	
	Set /A Iter=(%N%+%~2-1)/%~2
	Set /A j=0
	:Begin
		Set /A j+=1
		Set /A N1=(%j%-1)*%~2+1
		Set /A N2=%j%*%~2
		If %N2% GTR %N% Set /A N2=%N%
		:Begin2
		Cls
			Echo == Из %N% файлов показаны с %N1% по %N2% =====&Echo.	
			FOR /L %%i IN (%N1%,1,%N2%) DO Call Echo %%i=%%@%%i%%
			Echo.

			Echo == Введите номер файла, Q-Завершить работу, Enter-продолжить просмотр
			Set "In=QQ"
			Set /P In=
			If /I "%In%"=="Q" EndLocal& Exit /B 1
			If Not %j%==%Iter% If /I "%In%"=="QQ" GoTo :Begin
			If %j%==%Iter% If /I "%In%"=="QQ" Set /A j=0 &GoTo :Begin

			2>nul Set /A i=%In%
			Set "@FName="
			If "%In%"=="%i%" If %i% LEQ %N% Call Set "@FName=%%@%i%%%"
			If "%@FName%"=="" (Echo. &Echo !!! Номер файла "%In%" указан неверно &Pause &GoTo :Begin2)
			EndLocal& Set "%~3=%@FName%" &Exit /B 0
Exit /B 1
Выбор файла сделал в виде процедурищи, чтобы не загромождать восприятие последующего кода скрипта, который собрался ваять пользователь
Клиент посчитал задачу решенной, так что наваял для собственного удовольствия

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


Последний раз редактировалось megaloman, 11-02-2019 в 20:53.

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

Отправлено: 15:27, 09-02-2019 | #12