中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-17 00:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » ghost自动改ip找不到本地连接[求助][已结] 查看 1,454 回复 4
楼 主 ghost自动改ip找不到本地连接[求助][已结] 发表于 2006-08-17 21:52 ·  中国 广西 钦州 电信
初级用户
积分 38
发帖 14
注册 2006-08-16 15:37
UID 60649
性别 男
状态 离线
不知道有没有看过网上那个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 ]
2 发表于 2006-08-17 22:41 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
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的用法,你可以没事多翻翻论坛的老贴,全部看明白一遍你就是个批处理的高手了,另外参照我的签名。
3 发表于 2006-08-17 22:48 ·  中国 广西 钦州 电信
初级用户
积分 38
发帖 14
注册 2006-08-16 15:37
UID 60649
性别 男
状态 离线
谢谢版主了。不过我还是作我原来的思路,上面的我以明白了。
基本上我都是每天看这里的老贴两三个小时的,人不怎么聪明嘛。多看一下多学一下
可能我刚学不久吧,思路还没有上来`
4 发表于 2006-08-17 22:52 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  如果只是去掉冒号,可以这样做:

@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没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2006-08-18 08:30 ·  中国 山东 菏泽 电信
银牌会员
★★★
积分 1,246
发帖 488
注册 2003-11-11 00:00
UID 12699
性别 男
状态 离线
学习
论坛跳转: