多行变量

时间:2016-10-21 13:00:39

标签: batch-file command-line netsh

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

我不知道它是否可能,但这就是我希望打印在用户端看到的内容:

NIC1

NIC2

NIC3

选择你的网卡:

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

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

@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),是否有办法为每个变量显示每个标记一行? 然后,用户可以输入该特定行的已分配变量,以指定该脚本的其余部分将修改哪个网络适配器。

1 个答案:

答案 0 :(得分:0)

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

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%]!