Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Аватара для V!RTuE

Пользователь


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

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


megaloman, всё-равно появляется ошибка. Так как у меня в 2 местах подобный скрипт используется. Первое - это когда надо отозвать сертификат, то там при не нахождении искомой записи скрипт должен завершить работу (точнее вернуться в предыдущий пункт меню).
И второй случай это при создании нового сертификата у меня показывается нумерованный список уже имеющихся, но не без необходимости с ними что-либо делать. Эту часть кода я убрал:
Скрытый текст
Код: Выделить весь код
:Begin
		Echo.
		Set "NN="
		Set /P NN=Выбираем номер N=
		If "%NN%"=="" Exit /B 0
		If 1 LEQ %NN% If %NN% LEQ %y% (Call Set "Select=%%@@%NN%%%" &GoTo :End)
		Echo Введено неверное значение "%NN%", введите верное: &GoTo :Begin
	:End
	Echo вы выбрали: "%Select%"

поэтому если и не найдено записей, то я решил, что проще пропустить часть кода, сделав соответствующую метку и перейдя сразу к ней. Ну и надо учитывать, что не закрывая скрипт может потребоваться несколько раз выполнять этот код. и могут как присутствовать записи о сертификатах, так и нет. Чтобы не принимало %xx% старое значение я каждый раз присваиваю ему пустое значение.
Вот исправил, как вы написали.
Исполняемый код:
Код: Выделить весь код
	:: Показать список клиентов
	CALL :EchoColor 6 "	Список клиентов:"&echo.
	echo.
	FOR /F "usebackq skip=1 tokens=1,7 delims=/" %%i In ("%indextxt%") DO (
		Set "xx=%%j"
		Call Set "x@@%%xx:~3%%=%%xx:~3%%"
		Echo %%i| >nul 2>nul FindStr /B /I /C:"R"&&Call Set "x@@%%xx:~3%%=%%xx:~3%% [ОТОЗВАН]"
	)
	>nul 2>&1 Set "x@@" ||(CALL :EchoColor 4 "[X] Клиентские сертификаты [НЕ НАЙДЕНЫ]"&echo. &echo.)
	
	Set /A y=0
	FOR /F "usebackq tokens=2 delims==" %%i In (`Set "x@@"^|Sort`) DO (
		Set /A y+=1
		Call Set "@@%%y%%=%%i"
	)
	
	FOR /L %%i In (1,1,%y%) Do (Set "xx=     %%i"&Call Echo %%xx:~-4%%. %%@@%%i%%)
	
	:SKIP
	CALL :EchoColor 3 "================================================================================"&echo.
	echo.

Вот результат:
Цитата:
Список клиентов:

[X] Клиентские сертификаты [НЕ НАЙДЕНЫ]

Переменная среды x@@ не определена
================================================================================

P.S.: Опубликовал полностью свой проект OpenVPN-All-in-One - Скрипт,облегчающий создание серверной и клиентской части OpenVPN
Если будет желание и время разобраться, то прошу ознакомиться. Лучше там продолжить обсуждение.

Последний раз редактировалось V!RTuE, 11-01-2023 в 00:59.


Отправлено: 14:41, 10-01-2023 | #14