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

[网络连接] [已解决]IP获取类型判断的批处理为什么出错?

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "tokens=14" %%a in ('ipconfig /all^|find /I "Dhcp Enabled"') do (
  4. set dhcp=%%a
  5. echo dhcp=!dhcp!
  6. if !dhcp!== No (echo 固定IP) else (echo 动态IP)
  7. pause
  8. )
复制代码
我想通上面那段代码判断,本机的IP获取类型。可以结果却判断错误。
我的电脑是设的固定IP  DHCP ENABLE是为No
我就搞不懂了,!dhcp!这个变量是等于No啊,为什么
if !dhcp!== No (echo 固定IP) else (echo 动态IP)  这个条件会不成立呢?
结果总是输出动态IP,在这里为什么!dhcp!== No 不成立啊
echo !dhcp!显示是为No,头大啊,弄不懂了??????
兄台帮帮解释一下

[ 本帖最后由 xieqingx 于 2010-3-13 22:31 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  1. if "!dhcp!" equ "No" (echo 固定IP) else (echo 动态IP)
复制代码
Do All in Command Line

TOP

也是一样不行啊也是一样不行啊

TOP

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "tokens=14" %%a in ('ipconfig /all ^| find /i "Dhcp Enabled"') do (
  4.     set "dhcp=%%a"
  5.     set "dhcp=!dhcp:~0,2!"
  6.     if "!dhcp!" equ "No" (
  7.         echo 固定IP
  8.     ) else (
  9.         echo 动态IP
  10.     )
  11.     pause
  12. )
复制代码
Do All in Command Line

TOP

set "dhcp=%%a"    此时值已经是No
    set "dhcp=!dhcp:~0,2!"    重新截取字符No

楼上正解,请问为什么要重新截取字符呢?解释一下可以吗

TOP

你把ipconfig /all的结果输出到一个文本文件里面,用十六进制编辑器打开,就会发现行尾有个多余的回车符,而不仅仅是通常的回车+换行。
Do All in Command Line

TOP

  1. @echo off&setlocal enabledelayedexpansion&cls
  2. for /f "tokens=14" %%a in ('ipconfig /all^|find /I "Dhcp Enabled"') do (
  3. set dhcp=%%a
  4. echo !dhcp!rt
  5. set "dhcp=!dhcp:~0,2!"
  6. echo !dhcp!rt
  7. )
复制代码
楼上正解!  "NO"后面还存在不可见的控制字符!

TOP

原来如此啊,这个问题弄的我头大的很。谢谢各位

TOP

返回列表