楼 主
如何获取wmic的返回值
发表于 2010-03-28 14:17 · 中国 上海 东方有线
初级用户
★★
积分 75 发帖 75 注册 2009-10-23 10:23 16年会员 UID 153553 性别 男
状态 离线
set aa=wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="sohu.com" username="temp" password="temp" fjoinoptions=1 accountou=null
if %aa% == 0 (
echo 成功
goto :Next
)
这样子不行,高手来指点一下吧
第 2 楼
发表于 2010-03-28 14:35 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
1,执行一个命令,然后读其输出中受否含有关键词来判断。
2,执行一个命令,然后从%ERRORLEVEL%的返回代码来判断。
3,执行一个命令,然后检查被修改对象是否发生正确的变化来判断。
对于你提供的事例,这三种方法都可以使用(你的批处理本身就写错了)。
例如,从wmic或注册表读相应的值,来判断是否为希望修改的值。由于wmic的返回代码比较复杂,所以一般不使用%ERRORLEVEL%来判断wmic是否正常执行。
[ Last edited by Hanyeguxing on 2010-3-28 at 14:52 ]
第 3 楼
发表于 2010-03-28 14:46 · 中国 上海 东方有线
初级用户
★★
积分 75 发帖 75 注册 2009-10-23 10:23 16年会员 UID 153553 性别 男
状态 离线
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,
是不是要用for循环读取外部文件来判断呀,不太会,帮人到底给写一下行吗
第 4 楼
发表于 2010-03-28 14:54 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
Originally posted by czweb at 2010-3-28 14:46:
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,
是不是要用for循环读取外部文件来判断呀,不太会,帮人到底给写一下行吗
当wmic的返回信息中包含“错误”时,就会有%ERRORLEVEL%。
但如“无可用范例”等,是不会返回0以外的代码的。
WMIC可以get你尝试修改过的值,reg读取对应的注册表,都可以用啊
例如wmic computersystem where "name='abc'" call rename 123更改计算机名abc为123
这个时候就可以读%COMPUTERNAME%是否为123来判断。
[
Last edited by Hanyeguxing on 2010-3-28 at 15:00 ]
第 5 楼
发表于 2010-03-28 15:00 · 中国 上海 东方有线
初级用户
★★
积分 75 发帖 75 注册 2009-10-23 10:23 16年会员 UID 153553 性别 男
状态 离线
因为我写一个错误的域、用户名和密码,也是返回成功,
C:\Documents and Settings\cz>wmic computersystem where Name="%COMPUTERNAME%" cal
l JoinDomainOrWorkgroup Name="ss" username="aa" password="aa" fjoinoptions=1 acc
ountou=null
执行 (\\XC1\ROOT\CIMV2:Win32_ComputerSystem.Name="XC1")->JoinDomainOrWorkgroup()
方法执行成功 。
输出参数:
instance of __PARAMETERS
{
ReturnValue = 2691;
};
所以只有判断ReturnValue才是有效的
[
Last edited by czweb on 2010-3-28 at 15:02 ]
第 6 楼
发表于 2010-03-28 15:02 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
那就读ReturnValue是否为你需要的值来判断呗
第 7 楼
发表于 2010-03-28 15:03 · 中国 上海 东方有线
初级用户
★★
积分 75 发帖 75 注册 2009-10-23 10:23 16年会员 UID 153553 性别 男
状态 离线
可惜不会写,能帮忙吗
第 8 楼
发表于 2010-04-01 09:10 · 中国 辽宁 大连 辽宁神州云信息技术有限公司电信数据中心
初级用户
★
积分 27 发帖 12 注册 2008-04-26 03:58 18年会员 UID 116974 性别 男
状态 离线
Originally posted by czweb at 2010-3-28 02:46 PM:
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,
错!!!
【1】%ERRORLEVEL%不是不行;
【2】ReturnValue = 0不一定是对的。
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正