IT你好

加入 |登录

IT你好技术论坛广场IT档案袋 › 查看主题

150

查看

0

回复
返回列表

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1135 
精华
144 
积分
8341 
UID
go

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

1
发表于 2010-2-17 22:36 | 只看该作者 | 倒序看帖 | 打印
[转帖] 发一个通过命令行修改计算机工作组的批处理相关搜索: 批处理, 计算机, 工作组, 命令

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

TOP

IT你好技术论坛

GMT+8, 2026-1-13 07:30, Processed in 0.013709 second(s), 10 queries.

Powered by Discuz! X1

© 2001-2010 Comsenz Inc.