Говорят, если запретить 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, т.е. неважно какая платформа, какая разрядность или какой клиент.
Вот так просто получаем список правил:
Как видим, задача решена простым перебором во вложенных циклах. Данный скрипт оставляю на память:
- Использование EnableDelayedExpansion для передачи значения перебора в/за цикл
- Программное добавление правил брандмауера Windows
- Костыльная передача результата команды в переменную (конструкция && ||)
- Циклы (перебор директории и результата программы)
- Cmd replace (!pathProg:*1cv8\=!) с подстановкой значений
Комментариев нет:
Отправить комментарий