Вы должны быть в состоянии сделать это с помощью одной командной строки без необходимости использования переменных или использования for-loop :
@NetSh AdvFirewall Show CurrentProfile State|Find "ON">NUL&&(NetSh AdvFirewall Set CurrentProfile State OFF)||NetSh AdvFirewall Set CurrentProfile State ON
Для расширенного пакетный файл версия, также гарантирует, что входящие и исходящие правила установлены . (Обратите внимание, что это только примеры, а не рекомендации, и они были предоставлены для лучшего отображения макета исходного предложения при разбиении на несколько строк) :
@Echo Off
NetSh AdvFirewall Show CurrentProfile State | Find "ON" >NUL && (
NetSh Advfirewall Set CurrentProfile FirewallPolicy BlockInboundAlways,AllowOutbound
NetSh AdvFirewall Set CurrentProfile State OFF
) || (
NetSh AdvFirewall Set CurrentProfile State ON
NetSh Advfirewall Set CurrentProfile FirewallPolicy AllowInbound,AllowOutbound
)
Обратите внимание, что этизависят от языка, поэтому может потребоваться настройка, если язык вашей системы не является английским.
Если вы не являетесь членом группы «Администраторы» и на вашем компьютере включен контроль учетных записей, запустите скрипт как администратор .