启动期间在Windows计算机上设置IP地址

启动期间在Windows计算机上设置IP地址,windows,batch-file,ip-address,arp,netsh,Windows,Batch File,Ip Address,Arp,Netsh,我是一个Linux的家伙。我有一个相当具体的问题,我正试图解决一个Windows框,所以请原谅我的无知 问题(无法重新定义):我有一台有3个NIC的windows机器。每次启动它时,我都需要一种动态自动设置其IP地址的方法。每次启动这台机器时,它都会有不同的地址信息。当机器启动时,它将拥有一个由名称/值对组成的文件(即一个充满“=”项的文件)。我需要使用从批处理文件运行的标准windows命令提示符命令执行所有这些任务。我没有VB或任何可用的东西 最大的问题:我认为,如果Windows对其网络接

我是一个Linux的家伙。我有一个相当具体的问题,我正试图解决一个Windows框,所以请原谅我的无知

问题(无法重新定义):我有一台有3个NIC的windows机器。每次启动它时,我都需要一种动态自动设置其IP地址的方法。每次启动这台机器时,它都会有不同的地址信息。当机器启动时,它将拥有一个由名称/值对组成的文件(即一个充满“=”项的文件)。我需要使用从批处理文件运行的标准windows命令提示符命令执行所有这些任务。我没有VB或任何可用的东西

最大的问题:我认为,如果Windows对其网络接口的命名具有确定性,那么这将容易得多。如果是的话,我可以解析这个文件,然后使用netsh简单地设置“localareaconnection2”的IP地址。不过,就目前情况而言,Windows有时会在物理NIC上使用的名称周围移动。所以今天的“本地连接2”可能就是明天的“本地连接”。因此,我必须找到一种方法,通过使用MAC地址并找到相应的NIC,在启动期间确定这些事情。没有grep、awk等,从ipconfig输出中获取这些信息变得越来越困难

我的努力/成就: (1) 通过本地组策略编辑器添加windows设置启动脚本,我已经了解了如何在windows启动期间启动批处理文件。 (2) 我已经知道如何从批处理文件中解析我的名称/值对文件并获取令牌。 (3) 我尝试使用arp命令设置ip映射。很明显,这只是将数据包正确地路由到接口。但是,一旦数据包到达接口,它们就会被丢弃,因为这些数据包是针对NIC不属于的网络的。这对我没有好处。我需要设置NIC的ip地址

我当前的计划/我需要的帮助: (1) 解析我的名称/值对文件 (2) 在名称/值对文件中查找与mac地址相对应的网卡名称 (3) 使用netsh设置这些卡的ip地址 (4) 全部从批处理文件执行此操作 (5) 尽量不要抱怨我没有使用Linux设备:-)


非常感谢您的帮助。

您是否考虑过使用powershell脚本而不是cmd.exe脚本?真的有什么理由不能使用可执行文件(可能是用C编写的)而不是批处理文件吗?我以前从未使用过(或听说过)powershell。不过,我刚刚验证了我可以从命令行运行“powershell.exe”,因此,如果我可以使用该工具完成上述所有工作,并且它可以在启动时运行,那么这可能是一个选项。我自己还没有开始学习powershell(如果是我,我会用C编写的应用程序解决您的问题)但它应该做你需要的一切。从这里开始:我认为这是绝对可以做到的。你能举一个你的名字/值对文件的例子吗?我知道它很旧了,你还需要解决这个问题吗?