- 注册时间
- 2009-10-8
- 最后登录
- 2026-1-12
- 阅读权限
- 200
- 帖子
- 1135
- 精华
- 144
- 积分
- 8341
- UID
- 1
    
- 帖子
- 1135
- 精华
- 144
- 积分
- 8341
- UID
- 1
|
[转帖] 发一个通过命令行修改计算机工作组的批处理相关搜索: 批处理, 计算机, 工作组, 命令
使用新版的SR&S或者ASRTools后,克隆系统只需要一次重新启动就可以装好,但往往导致大部分驱动程序不能在启动到桌面前安装完成,尤其是网卡的驱动,这就导致在sysprep.inf中设置的工作组名无法生效。因此,我一直在寻找一种可以通过命令行修改工作组名的方法,但一直没有找到答案。终于通过google搜索到了WMI和WMIC,从而解决了这个难题,这可是我昨天晚上奋战到凌晨1点才找到的答案,好东西拿出来跟大家分享。 复制内容到剪贴板
代码:
:: 修改当前计算机的工作组名
:: 作者:Climbing(xclimbing@msn.com)
:: 创建日期:2006.10.26
:: 注:本批处理要求必须以系统管理员身份运行,给wmic增加适当的命令行参数,可以实现修改网络上的其它机器的工作组名。
@echo off
:: 检测命令行参数1
if not %1#==# set JoinWorkgroup=%1
if not %Joinworkgroup%#==# goto _doit
:: 从当前目录下的sysprep.inf中获得
if not exist sysprep.inf goto _noGrpName
for /f "usebackq tokens=*" %%i in (`type sysprep.inf ^| find /i "JoinWorkgroup"`) do @set %%i
:: 如果以上都没有,默认设置为BDGROUP
:_noGrpName
if %JoinWorkgroup%#==# set JoinWorkgroup=BDGROUP
:_doit
:: 先检查当前工作组设置,如果相同,则不修改
wmic computersystem get domain | findstr /r /i "^%JoinWorkGroup%$" > nul
if %errorlevel%==0 goto _quit
:: 检查环境变量COMPUTERNAME是否为空,如果为空,则从WMI数据库中提取
if not %COMPUTERNAME%#==# goto _change
for /f "usebackq skip=1 tokens=*" %%i in (`wmic computersystem get name`) do set CNAME=%%i
if %CNAME%#==# goto _quit
set COMPUTERNAME=%CNAME%
:_change
echo Changing Workgroup to "%JoinWorkgroup%" ...
echo.
wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="%JoinWorkgroup%"
if %errorlevel%==0 goto _success
goto _quit
:_success
echo Successfully Changed Workgroup to "%JoinWorkgroup%".
echo.
:_quit
for %%i in (Joinworkgroup cname) do set %%i=批处理里有比较详尽的说明,熟悉批处理的人应该可以搞明白怎么用,不熟悉的就熟悉一下吧。
强烈建议搞Windows系统维护的好好学习一下WMI相关的东西,说来惭愧,我也是刚接触到,但立刻就被它的强大给迷住了。 |
|
|