中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » ghost自动改ip找不到本地连接[求助][已结]
作者:
标题: ghost自动改ip找不到本地连接[求助][已结] 上一主题 | 下一主题
jzl168
初级用户





积分 38
发帖 14
注册 2006-8-16
状态 离线
『楼 主』:  ghost自动改ip找不到本地连接[求助][已结]

不知道有没有看过网上那个ghost后自动IP改的批处理,因为那个批处理有个很要命的缺点,就是只可以改第一块网卡就是(本地连接)。如果你ghost过去的话,那台机子的网卡不是一型号的,不然就是不在同一个ipc槽就会出现(本地连接 2)不然就是(本地连接 3) 我自己试过用find提出来,每次要的时候都会多个 :  不知道怎么办。
=================================
ipconfig /all >ipconfig.txt
find  "Ethernet adapter" ipconfig.txt >connect.txt
for /f "skip=2 tokens=3" %%c in (connect.txt) do set connect=%%c
=============================================
这是我得出来的connect.txt
=============================================
---------- IPCONFIG.TXT
Ethernet adapter 本地连接 2:

=============================================
我不知道怎么可以要到 (本地连接 2)
可以有其它方法要到吗?我要到的都是 (本地连接 2:)还多加一个点

PS.不好意思版主,刚才没看清楚版规。我是个新手,要了解for的作用在发话了
不过现在很想知道,正在学习中嘛 ^^

[ Last edited by jzl168 on 2006-8-17 at 22:43 ]

2006-8-17 21:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 2 楼』:  

Well,首先,前面两句建议还是合并为一句:
ipconfig /all | find "Ethernet adapter" >connect.txt
当然也可以直接在for /f里面使用而不产生临时文件。
其次,如果你想得到 (本地连接 2),那么,你可以在启用延迟环境变量(setlocal ENABLEDELAYEDEXPANSION)后,在for的do语句里面把"本地连接 2:"赋值到变量connect,然后通过输出!connect:~0,-1!的方法来去掉最后的那个冒号。
当然,这个问题并非一定要用for才能解决,很多时候,我们应该放开我们的思路:
@echo off
set "connect=本地连接"
ipconfig /all | find "Ethernet adapter" | find "2" && set "connect=本地连接 2"
ipconfig /all | find "Ethernet adapter" | find "3" && set "connect=本地连接 3"
未测试,只是提供思路,如果想体现得自动化一点,可以把查找条件放到for /l中去,然后用goto跳转。
学习for的用法,你可以没事多翻翻论坛的老贴,全部看明白一遍你就是个批处理的高手了,另外参照我的签名。

2006-8-17 22:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jzl168
初级用户





积分 38
发帖 14
注册 2006-8-16
状态 离线
『第 3 楼』:  

谢谢版主了。不过我还是作我原来的思路,上面的我以明白了。
基本上我都是每天看这里的老贴两三个小时的,人不怎么聪明嘛。多看一下多学一下
可能我刚学不久吧,思路还没有上来`

2006-8-17 22:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  如果只是去掉冒号,可以这样做:
@echo off
setlocal enabledelayedexpansion
for /f "skip=2 tokens=3" %%i in (connect.txt) do (
    set var=%%i
    set "var=!var::=!"
)
echo %var%
pause




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-8-17 22:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wang6610
银牌会员




积分 1246
发帖 488
注册 2003-11-11
状态 离线
『第 5 楼』:  

学习

2006-8-18 08:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: