[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理自动更改DNS时使用for语句如何嵌套if跳转语句?

我有一个自动判断本地连接名称并更改DNS的脚本,其中的一部分如下:
  1. echo 清理现有DNS
  2. echo 现有的连接名如下:
  3. for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (
  4. set netname=%%j
  5. if "%%j"=="环回" goto back
  6. if "%%j"=="内部" goto back
  7. netsh interface ip delete dns name="%%j" addr=all >nul
  8. netsh interface ip add dns name="%%j" addr=%dns1% index=1 >nul
  9.   netsh interface ip add dns name="%%j" addr=%dns2% index=2 >nul
  10. :back
  11. pause>nul)
复制代码
在这段代码中我的本意是如果检测到本地连接名为“环回”或者“内部”的时候不对其DNS做更改,并继续执行循环知道完成,但目前我只能加跳转,请问for中嵌套IF跳转语句怎么处理

用CALL
  1. @echo off
  2. for %%i in (3 2 3 4 8 87 7 76 6 7) do call:asd %%i
  3. goto:eof
  4. :asd
  5. echo %*
  6. goto:eof
复制代码

TOP

可以这样。

if not "%%j"=="环回" if not "%%j"=="内部" (
...
)

取消goto

TOP

楼上,那如果检测到“%%j==环回”的话,我需要跳过对“环回”连接的设置,而继续执行循环并检测设置下一个连接名怎么办?

TOP

返回列表