脚本编程

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

Jager · 3月4日 · 2014年 4349次已读

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

Ghost安装Win7/XP后自动恢复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,这时就可以远程连接电脑进行维护了,整个过程均不需要现场操作。

41 条回应
  1. 龙三公子 2014-3-4 · 23:55

    这个确实不错

    • avatar
      Jager 2014-3-5 · 7:58

      [呵呵] 也就电脑多的时候用得上,个人电脑是没必要的了。

      • 龙三公子 2014-3-5 · 19:54

        是这样的,我的博客之前也写了一个类似的脚本,适合公司局域网用的。

        • avatar
          Jager 2014-3-5 · 20:46

          只有遇到类似问题才知道它的作用。

  2. 夏日博客 2014-3-5 · 8:33

    个人电脑直接用自动获取IP了。

    • avatar
      Jager 2014-3-5 · 8:41

      嗯,个人电脑没必要这么折腾,也不用自己封装系统,这是给我们公司那些做PC维护的做的,毕竟公司都是用的静态IP,不然一个TFTP就搞定了。

  3. 圆月博客 2014-3-5 · 9:17

    原来是这样啊

    • avatar
      Jager 2014-3-5 · 9:33

      啥?

  4. rock racing cyclisme 2014-3-5 · 9:40

    有时候电脑运行的很慢是什么原因呢

    • avatar
      Jager 2014-3-5 · 9:55

      一般是系统垃圾过多,然后就是后台运行的进程过多,占用内存和CPU过高~~

  5. maillot trek 2014-3-5 · 11:01

    先收藏,有情况突发就可以使用了。

    • avatar
      Jager 2014-3-5 · 11:12

      [呵呵] 电脑数量大、且为静态IP的时候用处大,个人电脑估计用不上。

  6. WordPress主题 2014-3-5 · 11:58

    用上的几率不大。。

    • avatar
      Jager 2014-3-5 · 12:39

      仅为工作记录。 [囧]

  7. 潮流台 2014-3-5 · 13:07

    [挖鼻屎] 的确用不到

    • avatar
      Jager 2014-3-5 · 13:36

      用不到没关系,但要注意个人卫生呀( ⊙ o ⊙ )! [阴险]

  8. PHP二次开发 2014-3-5 · 14:03

    还真没搞过这个,有什么作用呢?

    • avatar
      Jager 2014-3-5 · 14:34

      有了这个批处理,网络部那些同事就可以远程给用户安装系统,不需要现场去安装。
      先把镜像传到用户本地,然后使用ONEKEY进行系统安装,因为这个批处理是封装到系统的启动项的,所以安装完系统就可以自动恢复原来的IP,恢复之后,公司的维护人员就可以直接通过IP远程连接过去,进一步调试系统,整个过程都是使用dameware连接。

  9. Youth.霖 2014-3-6 · 7:40

    看不懂干什么用的……

    • avatar
      Jager 2014-3-6 · 17:59

      重装系统后,自动恢复IP

  10. 寇铈鑫 2014-3-6 · 12:07

    博主 我能说我看不懂么 最起码我用不上

    • avatar
      Jager 2014-3-6 · 17:59

      是用不上~除非对代码感兴趣可以看看。

  11. 小新 2014-3-6 · 12:29

    个人用户就看看吧。。

    • avatar
      Jager 2014-3-6 · 17:58

      要是对bat感兴趣也可以看看代码嘛。

  12. 马克互联网 2014-3-6 · 12:48

    很适合网吧用,可以到网吧推销下

    • avatar
      Jager 2014-3-6 · 17:58

      网吧现在都是无盘系统,而且用得网刻技术,不需要这个呢。

  13. 我爱集分宝 2014-3-6 · 15:06

    简单使用,博主批处理玩的溜啊

    • avatar
      Jager 2014-3-6 · 17:58

      谬赞了。

  14. 垂直绿化 2014-3-6 · 16:26

    一般都是自动找IP的啊,可以直接上网

    • avatar
      Jager 2014-3-6 · 17:57

      你说的是动态IP的情况,像我们公司确实静态固定IP,没办法。。

      • 三日月 2014-3-25 · 16:00

        公司话说都是固定好IP的话好管理,不是有专门软件管这个的么

  15. 司马传www.simzhuan.com 2014-3-6 · 23:34

    这个很有用

    • avatar
      Jager 2014-3-7 · 7:56

      看来你开明白了它的作用了。 [握手]

  16. 三日月 2014-3-25 · 16:01

    批处理的确挺强大的东西,我的小黑刷机也都是拿别人的批处理来的

    • avatar
      Jager 2014-3-25 · 16:13

      感兴趣的话也可以学学嘛~刷智能机REC的工具很多都是用批处理写的。

      • 三日月 2014-3-25 · 16:49

        是的啊,的确很多都是这个批处理弄的,很方便,而且效率不错,速度也快

  17. xiao 2014-5-8 · 14:17

    用wmic会更好

    • avatar
      Jager 2014-5-8 · 15:04

      用来修改IP还是获取连线名称?

  18. snake 2020-1-13 · 22:32

    小白请问,这个该怎么操作使他变成可以在系统运行的文件?

  19. 七羽 2022-6-21 · 16:24

    大佬,你这个代码不兼容简体系统啊我的系统是简体的,但是这个文本导出不了。

    • avatar
      Jager 2022-6-27 · 15:41

      依葫芦画瓢即可,简体里面的描述不太一样,比如子網路遮罩在简体系统叫做子网掩码,都参考改一遍即可。

  20. 七羽 2022-7-21 · 22:42

    大哥,我想把首选和备用dns导出来导进去。怎么加代码? 能不能加你QQ请教?