[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
专门被call 调用
  1. :ready
  2. for /F "tokens=1,2* delims=:. " %%a in ('ipconfig/all') do (
  3. if defined dns1 set dns2=%%a.%%b.%%c&goto:eof
  4. if /i "%%a %%b"=="Ethernet adapter" set NIC=%%c&call set NIC=%%NIC:~0,-2%%
  5. if /i "%%a %%b"=="IP Address" set "ip=%%c"
  6. if /i "%%a %%b"=="Default Gateway" set "gateway=%%c"
  7. if /i "%%a %%b"=="DNS Servers" set "dns1=%%c")
  8. goto:eof
复制代码
放到批处理的最后边
最后的goto:eof是防止ipconfig/all中没有dns1而设置的。如果本标签在批处理最后面的时候,可以不用这个goto:eof。但如果下面还有别的标签,推荐用。主要的返回,是依靠for内的goto:eof完成的

[ 本帖最后由 hanyeguxing 于 2010-4-18 22:55 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 antony521 于 2010-4-19 12:31 发表
set NIC=%%NIC:~0,-2%%里为什么是-2呢?没发现:号后面有空格呀!
if defined dns1 set dns2=%%a.%%b.%%c&goto:eof这句中的goto:eof我曾试过,程序直接就退出了,在你这里怎么就运行正常了,哪不对了呢?

1,正常的ANSI编码文本换行效果是由0D 0A(即回车符+换行符)实现的,而这里是0D 0D 0A,即前面多了一个回车符。
你可以把Ethernet adapter这一行:前的字符全去掉,其他行也全去掉,看看这个文本多少字节?
2,不要使用exit/goto :eof。
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. call :ready
  3. echo.中间部分省略
  4. :ready
  5. for /F "tokens=1,2* delims=:. " %%a in ('ipconfig/all') do (
  6. if defined dns1 set dns2=!dns1!&if "!dns1!"=="!gateway!" set "dns1="&goto:eof
  7. if /i "%%a %%b"=="Ethernet adapter" set NIC=%%c&call set NIC=%%NIC:~0,-2%%
  8. if /i "%%a %%b"=="IP Address" set "ip=%%c"
  9. if /i "%%a %%b"=="Default Gateway" set "gateway=%%c"
  10. if /i "%%a %%b"=="DNS Servers" set "dns1=%%c")
  11. goto :eof
复制代码

[ 本帖最后由 hanyeguxing 于 2010-4-20 15:28 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表