При работе с cmdline
мы используем один %
, однако внутри пакетного файла вам необходимо удвоить %
для таких переменных токена, как: %%G
Также для запуска каждого результата вам нужен блок кода, поэтому мы можем сделать это без необходимости delayedexpansion
, если мы не установим переменную.
@echo off
set "_netstat_cmd=netstat -nr"
FOR /F "tokens=5" %%G IN ('%_netstat_cmd% ^|find "10.11.3.31"') Do (
echo Result is %%G
route delete 10.11.30.188
route delete 10.11.30.103
route delete 10.11.30.68
route delete 10.11.0.140
route delete 10.11.30.63
route add 10.11.30.188 mask 255.255.255.255 %%G METRIC 1
route add 10.11.30.103 mask 255.255.255.255 %%G METRIC 1
route add 10.11.30.68 mask 255.255.255.255 %%G METRIC 1
route add 10.11.0.140 mask 255.255.255.255 %%G METRIC 1
route add 10.11.30.63 mask 255.255.255.255 %%G METRIC 1
)
Если вы действительно хотите установить переменную, вам нужно delayedexpansion
, чтобы развернуть переменные внутри блока кода.
@echo off
setlocal enabledelayedexpansion
set "_netstat_cmd=netstat -nr"
FOR /F "tokens=5" %%G IN ('%_netstat_cmd% ^|find "10.11.3.31"') Do (
echo Result is %%G
set "rslt=%%G"
route delete 10.11.30.188
route delete 10.11.30.103
route delete 10.11.30.68
route delete 10.11.0.140
route delete 10.11.30.63
route add 10.11.30.188 mask 255.255.255.255 !rslt! METRIC 1
route add 10.11.30.103 mask 255.255.255.255 !rslt! METRIC 1
route add 10.11.30.68 mask 255.255.255.255 !rslt! METRIC 1
route add 10.11.0.140 mask 255.255.255.255 !rslt! METRIC 1
route add 10.11.30.63 mask 255.255.255.255 !rslt! METRIC 1
)