Некоторые картинки не загружаются из РФ и РК, используйте VPN.

пятница, 27 января 2023 г.

CMD Script Добавить правила файервола по маске 1cv*.exe

Говорят, если запретить 1С выход в интернет, то она работает быстрее. Сервисами чел не пользуется, так что решил на нем потренироваться и описал такой скрпит:

@echo off
set Prg="%systemdrive%\progra*"
SETLOCAL EnableDelayedExpansion
FOR /D %%i in ("!Prg!") do (
	FOR /D %%j in ("%%i\1cv8\8*") do (
		echo %%j
		set pathProg=%%j\bin
		set ver=!pathProg:*1cv8\=!
		FOR /F "tokens=*" %%k in ('dir /b "!pathProg!\1cv*.exe"') do (
			echo. %%k
			set nameEXE=!pathProg!\%%k
			set nameFW="Block1C_%%k_!ver!"
			netsh advfirewall firewall show rule name=!nameFW! >null && set RuleExist=1 || set RuleExist=0
			if  !RuleExist! EQU 0 (
				netsh advfirewall firewall add rule name="!nameFW!" dir=out program="!nameEXE!" profile=any action=block
			) else (
				echo.   Rule !nameFW! are exist
			)
		)
		echo.
	)
	echo.
)
SETLOCAL DisableDelayedExpansion

Что он делает - проверяет на наличие (по имени сформированному им самим) и добавляет, при отсутствии, правила блокировки для \Progra*\1cv8\8*\bin\1cv*.exe, т.е. неважно какая платформа, какая разрядность или какой клиент.

Вот так просто получаем список правил:


Как видим, задача решена простым перебором во вложенных циклах. Данный скрипт оставляю на память:

  1. Использование EnableDelayedExpansion для передачи значения перебора в/за цикл
  2. Программное добавление правил брандмауера Windows
  3. Костыльная передача результата команды в переменную (конструкция && ||)
  4. Циклы (перебор директории и результата программы)
  5. Cmd replace (!pathProg:*1cv8\=!) с подстановкой значений

Комментариев нет:

Отправить комментарий