多行变量

Multiline Variables

我在工作中经常激活防火墙,大部分时间我都在笔记本电脑上。使用顶行数字对我来说很痛苦,因为我已经习惯了完整的键盘布局。多次进入网络适配器属性并更改静态 IP 地址并不好玩。我不只是想制作一个可以在我的电脑上使用的脚本。我希望我们的其他技术人员也能使用它。如果您愿意,可以使用防弹脚本。我只需要一部分代码的帮助,剩下的我已经搞定了。 我想回应 Net 适配器接口,并在提供修改选项之前让用户选择要修改的适配器。

我不知道这是否可能,但这是我希望打印在用户端的样子:

网卡1

网卡2

网卡3

选择您的网卡:

这样的事情有可能吗?任何输入将不胜感激。

摘要: 查询并打印所有适配器,并为每个适配器附加一个数值。 用户输入与适配器关联的值。 这会将接口名称转储到变量中。我从那里拿的。

@echo off
for /f "skip=3 tokens=1-4 delims= " %%a in ('netsh interface show interface') do (
   @echo %%d    %%b   %%a
)

这将显示我想要的信息,但现在是我想要的方式。 有没有办法让每一行显示一个变量给它自己?

例如。不是每个变量 (%%a,%%​​b,%%c,%%d) 都显示标记中的所有行,有没有办法为每个标记每个变量显示一行? 然后用户可以输入该特定行的分配变量来指定脚本的其余部分将修改哪个网络适配器。

在循环中添加一个计数器得到一个索引,以后可以选择 并为每个接口设置一个变量。

for /l 根据可用的适配器为 choice 设置有效选项。

@echo off
setlocal enabledelayedexpansion
set count=0
for /f "skip=3 tokens=1-4 delims= " %%a in ('netsh interface show interface') do (
   set /a count+=1
   set interface[!count!]=%%d    %%b   %%a
   @echo !count!  %%d    %%b   %%a
)
for /l %%i in (1,1,%count%) do set number=!number!%%i
choice /c %number%  /m "type index number"
set index=%errorlevel%
echo you choosed adapter %index%: !interface[%index%]!