无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4251|回复: 11
打印 上一主题 下一主题

[求助] 请帮忙简化下一段批处理命令。

[复制链接]
跳转到指定楼层
1#
发表于 2013-5-20 22:52:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
主要是为了获取相关的IP地址。
for /f "tokens=15" %%i in ('ipconfig/all ^| find /i "IP Address"') do set myip=%%i
for /f "tokens=13" %%i in ('ipconfig/all ^| find /i "Default Gateway"') do set mywg=%%i
for /f "tokens=15" %%i in ('ipconfig/all ^| find /i "DNS Servers"') do set dns=%%i
for /f "tokens=15" %%i in ('ipconfig/all ^| find /i "Subnet Mask"') do set mymsk=%%i

echo.IP Configuration
echo IP Address. . . . . . . . . . . . :%myip%
echo Subnet Mask . . . . . . . . . . . :%mymsk%
echo Default Gateway . . . . . . . . . :%mywg%
echo DNS Servers . . . . . . . . . . . :%dns%

for /f "tokens=1-4 delims=." %%i in ("%myip%") do (
        set mynet=%%i.%%j.%%k
        set BaseIP=%%l

这样是可以。不过执行了4次ipconfig命令。运行就慢了。
2#
发表于 2013-5-21 07:33:48 | 只看该作者
如下:
  1. ipconfig /all > "%temp%\temp.txt"
  2. for /f "tokens=15" %%i in ('type "%temp%\temp.txt" ^| find /i "IP Address"') do set myip=%%i
  3. for /f "tokens=13" %%i in ('type "%temp%\temp.txt" ^| find /i "Default Gateway"') do set mywg=%%i
  4. for /f "tokens=15" %%i in ('type "%temp%\temp.txt" ^| find /i "DNS Servers"') do set dns=%%i
  5. for /f "tokens=15" %%i in ('type "%temp%\temp.txt" ^| find /i "Subnet Mask"') do set mymsk=%%i

  6. echo.IP Configuration
  7. echo IP Address. . . . . . . . . . . . :%myip%
  8. echo Subnet Mask . . . . . . . . . . . :%mymsk%
  9. echo Default Gateway . . . . . . . . . :%mywg%
  10. echo DNS Servers . . . . . . . . . . . :%dns%

  11. for /f "tokens=1-4 delims=." %%i in ("%myip%") do (
  12.         set mynet=%%i.%%j.%%k
  13.         set BaseIP=%%l
  14. )
  15. del /s /q /f "%temp%\temp.txt"
复制代码
写入文件后使用
回复

使用道具 举报

3#
 楼主| 发表于 2013-5-21 14:24:39 | 只看该作者
这样要读4次文件。会快点吗?
回复

使用道具 举报

4#
发表于 2013-5-21 16:34:18 | 只看该作者
本帖最后由 pznpt 于 2013-5-21 16:35 编辑

也许可以这样。没有XP,没测试
  1. @echo off&setlocal enabledelayedexpansion
  2. set r="IP Address" "Default Gateway" "DNS Servers" "Subnet Mask"
  3. for /f "tokens=1*delims=:" %%i in ('ipconfig/all^|findstr /ic:%r:" "=" /c:"%') do (
  4.     set "str=%%i"
  5.     for %%a in (%r%) do if "!str:%%~a=!" neq "!str!" set "%%~a=%%j"
  6. )

  7. echo IP Configuration
  8. echo IP Address. . . . . . . . . . . . :%IP Address:~1%
  9. echo Subnet Mask . . . . . . . . . . . :%Subnet Mask:~1%
  10. echo Default Gateway . . . . . . . . . :%Default Gateway:~1%
  11. echo DNS Servers . . . . . . . . . . . :%DNS Servers:~1%

  12. for %%a in (%IP Address%) do set mynet=%%~na & set BaseIP=%%~xa

  13. echo MyNet . . . . . . . . . . . . . . :%mynet%
  14. echo BaseIP. . . . . . . . . . . . . . :%BaseIP:~1%
  15. pause
复制代码
回复

使用道具 举报

5#
发表于 2013-5-21 19:41:44 | 只看该作者
pznpt 发表于 2013-5-21 16:34
也许可以这样。没有XP,没测试

似乎没有成功:

1.png (38.39 KB, 下载次数: 51)

1.png
回复

使用道具 举报

6#
发表于 2013-5-21 20:16:12 | 只看该作者
527104427 发表于 2013-5-21 19:41
似乎没有成功:


xp和win7的 ipconfig 显示不一样

xp显示:IP Address,win7显示:ipv4 地址

xp显示:Default Gateway,win7显示:默认网关

用ipconfig的话代码不通用。楼主的系统应该是xp,呵呵。
回复

使用道具 举报

7#
发表于 2013-5-21 20:30:58 | 只看该作者
pznpt 发表于 2013-5-21 20:16
xp和win7的 ipconfig 显示不一样

xp显示:IP Address,win7显示:ipv4 地址

哦,原来是这样!
回复

使用道具 举报

8#
 楼主| 发表于 2013-5-21 20:33:33 | 只看该作者
本帖最后由 icevan 于 2013-5-21 21:06 编辑

谢谢pznpt指点。
开始没注意。以为FINDSTR就是FIND,
在问个问题。
%%~na和%%~xa是怎么回事啊?或者请您指个方向我去找找。
回复

使用道具 举报

9#
 楼主| 发表于 2013-5-21 20:41:36 | 只看该作者
本帖最后由 icevan 于 2013-5-21 20:57 编辑

findstr.exe原来和FIND不一样。
刚刚试了下。搞定。要快很多。
谢谢。。
回复

使用道具 举报

10#
 楼主| 发表于 2013-5-21 22:44:07 | 只看该作者
本帖最后由 icevan 于 2013-5-21 22:48 编辑
pznpt 发表于 2013-5-21 16:34
也许可以这样。没有XP,没测试


谢谢您的帮助,
还想问问。后面我要引用:%IP Address:~1%的话
是该用%IP Address:~1%还是!IP Address:~1!

我个人理解的是用%号的。因为都不是一条命令了。
回复

使用道具 举报

11#
发表于 2013-5-22 00:56:10 | 只看该作者
在问个问题。
%%~na和%%~xa是怎么回事啊?或者请您指个方向我去找找。

比如,for %%a in (127.0.0.1) do echo %%~na&echo %%~xa
for会将字串127.0.0.1理解成文件,%%~na为文件名(127.0.0),%%~xa为扩展名(.1)。for /?帮助里有。
当然可以用for /f "tokens=1-4delims=." %%a in ("127.0.0.1") do echo .....,但两相比较,前者要简单一丁点。

还想问问。后面我要引用:%IP Address:~1%的话
是该用%IP Address:~1%还是!IP Address:~1!

都可以的,您可以试试
回复

使用道具 举报

12#
 楼主| 发表于 2013-5-22 21:27:34 | 只看该作者
谢谢指点。
您是使用的%%a。
还有我自作主张的把%%~na&改成了%%~na &。造成获取的变量多了一个空格。
这些都是小细节。以后一定要注意。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 23:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表