Как сохранить многострочный вывод команды в пакетную переменную? - PullRequest
0 голосов
/ 14 октября 2019

Я не брат в пакетных сценариях, но я могу адаптироваться. Я пытаюсь создать командный файл, который будет проверять состояние брандмауэра и включать / выключать его. Примечание: [выходные данные команды содержат ON или OFF в выходных данных вместе с другими строками].

set "result=" netsh advfirewall show allprofiles state

IF not x%result:ON=%==x%result% (
    ::Disable Firewall
    NetSh Advfirewall set allprofiles state off
) ELSE (
    ::Enable Firewall
    NetSh Advfirewall set allprofiles state on
)

проблема, поскольку вы видите, что переменная результата содержит только последнюю строку выходных данных команды, так каксохранить многострочный вывод команды в переменной, не сохраняя вывод команды в файле, который кажется избыточным.

1 Ответ

0 голосов
/ 15 октября 2019

Вы должны быть в состоянии сделать это с помощью одной командной строки без необходимости использования переменных или использования :

@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
)

Обратите внимание, что этизависят от языка, поэтому может потребоваться настройка, если язык вашей системы не является английским.

Если вы не являетесь членом группы «Администраторы» и на вашем компьютере включен контроль учетных записей, запустите скрипт как администратор .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...