专栏首页张戈的专栏Ghost安装Win7/XP后自动恢复IP的批处理

Ghost安装Win7/XP后自动恢复IP的批处理

今天维护人员找的我说,最近要推 Win7 了,暂时桌面云没推广,还是使用手动安装 Win7 的方式。所以,需要我帮忙写一个脚本,大概功能就是在 Ghost Win7 之前先导出 XP 的 IP 信息,在 Ghost 完成之后,自动读取这个 IP 信息用于恢复 IP 设置。

之前其实写过一个 XP 的,这次是 Win7 的,其实大同小异了,花了近半小时测试成功了,现在来记录一下。

懒得去折腾兼容方法,就写了 2 个导出 IP 的脚本和一个 IP 恢复脚本,用于 Ghost远程安装Win7 后自动恢复 IP 设置的。(繁体环境)

1、导出 WinXP 系统 IP 信息:

@echo off&setlocal enabledelayedexpansion   
title WindowsXP IP信息導出工具(配合恢復腳本所用)   
echo IP信息導出中...   
for /f "tokens=1,2 delims=:" %%i in ('ipconfig') do (   
    echo %%i | find /i "IP Address">nul && echo IP:%%j>D:\ip.txt   
    echo %%i | find /i "Subnet Mask">nul && echo MK:%%j>>D:\ip.txt   
    if "!GW!" equ "1"  call :end   
    echo %%i | find /i "Default Gateway">nul && echo GW:%%j>>D:\ip.txt && set GW=1  
)   
  
:end   
echo=   
echo 導出完畢.任意鍵檢查...   
pause>nul   
start "" d:\ip.txt   
exit

2、导出 Win7 系统 IP 信息

@echo off&setlocal enabledelayedexpansion   
title Windows 7 IP信息導出工具(配合IP恢復腳本所用)   
echo IP信息導出中...   
for /f "tokens=1,2 delims=:" %%i in ('ipconfig') do (   
    echo %%i | find /i "IPv4 位址">nul && echo IP:%%j>D:\ip.txt   
    echo %%i | find /i "子網路遮罩">nul && echo MK:%%j>>D:\ip.txt   
    if "!GW!" equ "1"  call :end   
    echo %%i | find /i "預設閘道">nul && echo GW:%%j>>D:\ip.txt && set GW=1  
)   
  
:end   
echo=   
echo 導出完畢.任意鍵檢查...   
pause>nul   
start "" d:\ip.txt   
exit

Ps:测试过程中,发现 win7 使用 ipconfig 命令,会有个 IPv6 的网关,导致出错,只好用了一个 if 跳出循环。

3、最后输出到D:\ip.txt 的格式如下(太偷懒了,就三行,手动写入也很快!):

IP: 10.197.198.173  
MK: 255.255.255.254  
GW: 10.197.198.1

最后,通过下面这个脚本读取 d:\IP.txt 内容并恢复 IP:

@echo off&setlocal enabledelayedexpansion   
title Ghost系統后的IP恢復工具   
rem 判斷文件是否存在   
if not exist d:\ip.txt goto error   
  
rem 從IP.txt讀取信息,并設置變量   
for /f "tokens=1,2 delims=: " %%a in (d:\ip.txt) do (    
    if /i "%%a"=="IP" set addr=%%b   
    if /i "%%a"=="MK" set mask=%%b   
    if /i "%%a"=="GW" set gateway=%%b   
)   
       
rem 獲取第一塊網卡的名稱,并設置IP,多塊網卡將至設置第一塊   
for /f tokens^=1^,2^ delims^=^" %%j in ('netsh interface ip show config') do (        
              
                if "%%j"=="介面 " (  
                  netsh interface ip set address name="%%k" source=static addr=!addr! mask=!mask! gateway=!gateway!      
                  call :end                       
                         
                       )    
                if "%%j"=="接口 " (    
                    netsh interface ip set address name="%%k" source=static addr=!addr! mask=!mask! gateway=!gateway!      
                    call :end                      
            )           
        )     
  
:end   
echo 設置完畢,3S后自動退出!   
ping -n 3 127.1 >nul   
exit   
  
:error   
cls   
echo 錯誤:D盤根目錄未發現ip.txt文件!請手動設置IP,任意鍵退出...   
pause>nul   
exit

这个脚本简、繁 WinXP/7 等系统都可以兼容设定 IP,其实是修改自我以前写的Windows 下获取网络连线实际名称,加强 IP 类设置脚本的兼容性中的脚本。

4、脚本用法:

1、封装 Ghost 系统镜像时,将设置 IP 的脚本加入启动项

2、Ghost 安装系统之前先通过【导出脚本】或【手动的方法】在 d 盘建立 ip.txt,写入如上三条信息

3、通过 oneKey 远程恢复 Ghost 系统镜像,等恢复完成之后,IP 脚本自动恢复 D 盘设定好的 IP,这时就可以远程连接电脑进行维护了,整个过程均不需要现场操作。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Win平台Web访问白名单设置脚本(IP安全性原则)

    最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改 tomcat 下的 server.xml 配置文件,通过定义 allow="IP.....

    张戈
  • 身份切换脚本,免登入切换权限的利器

    分享一个我曾经写过的功能代码:工具身份切换脚本,主要用于脚本执行期间其他身份(如 administrator 等)的切换,从而获取到所需权限。 使用说明: 1....

    张戈
  • Linux运维基础技能: 脚本编程与Linux命令

    本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺)...

    张戈
  • Shell编程快速入门指南

    字符串可以使用单引号和双引号,单引号中不能包含单引号,即使转义单引号也不次那个,双引号则可以,双引号也可以使用字符串。

    用户1515472
  • shell中字符串比较和模糊比较说明

        2、两边的双引号都是可有可无的,但当字符串为空的时候就会报错,提示unary operator expected,因此,需要加入双引号;

    党志强
  • shell学习三参数传递 原

    echo "Shell 传递参数实例" echo "执行的文件名:$0" echo "第一个参数为:$1" echo "第二个参数为:$2" echo ...

    用户2603479
  • bash 的变量和参数

    对一个编程脚本来说,最最基础的当然是变量。 对大多数开发者来说,变量也是最不值得的大说特说的。 但 bash 里的变量有一些特别的地方值得说说,谨防跌坑。 基本...

    IMWeb前端团队
  • bash 的 Test

    bash 中的 test 确实是一个让初学者迷糊的概念,但是理解了之后,发现它并没有深奥的地方。

    IMWeb前端团队
  • bash 的 Test

    原文 bash 中的 test 确实是一个让初学者迷糊的概念,但是理解了之后,发现它并没有深奥的地方。 实际场景 export NVM_DIR="/Users/...

    IMWeb前端团队
  • bash 的变量和参数

    我的 bash 生涯第一坑。bash 中,赋值 = 两边不能有空格。 有空格又会怎样?

    IMWeb前端团队

扫码关注云+社区

领取腾讯云代金券