xiaowuhello
[转帖] 发一个通过命令行修改计算机工作组的批处理

[转帖] 发一个通过命令行修改计算机工作组的批处理相关搜索: 批处理, 计算机, 工作组, 命令

使用新版的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相关的东西,说来惭愧,我也是刚接触到,但立刻就被它的强大给迷住了。