关于一个批处理

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:42:19
我自己弄了个关于我们校园网获取ip的批处理(因为我们经常遇到开机分配不到ip的问题),遇到了的问题,请大家指教!
@echo off
title ipreget Change by Prince Blue
MODE con: COLS=60 LINES=40
color 21
:start
echo 请选择要进行的操作,然后按回车:
echo.
echo 1. 重新获取 2. 退出
:set
SET a=
SET /P a=选择:
IF NOT '%a%'=='' SET a=%a:~0,1%
ECHO.
IF /I '%a%'=='1' goto 1
IF /I '%a%'=='2' goto 2

echo %a% 选择无效,请重新输入:
echo.
goto set
:1
@echo off
ipconfig/release
ipconfig/renew
goto start
:2
exit
-----------------------
1.怎么样判断电脑是否已经成功获得了ip以至与程序可以自动执行直到获得ip为止
2.怎么样隐藏它释放获取ip过程的那些字符代码啊?像那些windowsip配置什么什么的

请大家指教,谢谢^_^
lojin_grace大哥
这句话我试不出来啊,一到这句话就自动退出了
set IP=
for /F "tokens=15" %I IN ('ipconfig ^| find "IP Address"') do Set IP=%I

1、
以下语句会将IP放到环境变量IP中,然后判断是否为空
set IP=
for /F "tokens=15" %I IN ('ipconfig ^| find "IP Address"') do Set IP=%I

这个语句由ipconfig find 和 for 构成
首先执行ipconfig ,可以看到里面由IP信息(如果有的话),然后通过find语句定位到IP Address你一行,当然有把ipconfig的输出作为输入,就用管道|,所以命令就是 ipconfig | find "IP Address";找到了这一行,我们还要定位到IP地址那点点,前面废话不要,就用for把,for能够取字符中的第多少个单词,就是上面tokens指出的第15个单词,所以命令就变成了
for /F "tokens=15" %I IN ('ipconfig ^| find "IP Address"') do @ECHO %I
当然上面使用Set,而不是简单显示了,里面的|用了^作逃逸
你可以按照上面指出的三级,三个命令,一级级试

if "%IP%##"=="##" goto TODO

2、重定向标准输出到nul 就什么也看不到了
ipconfig /release >nul
ipconfig /renew >nul