中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 12:52
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何获取wmic的返回值
可打印版本  1,121 / 7
第1楼 czweb 发表于 2010-03-28 14:17
初级用户 发帖 75 积分 75
如何获取wmic的返回值
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楼 Hanyeguxing 发表于 2010-03-28 14:35
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
1,执行一个命令,然后读其输出中受否含有关键词来判断。
2,执行一个命令,然后从%ERRORLEVEL%的返回代码来判断。
3,执行一个命令,然后检查被修改对象是否发生正确的变化来判断。

对于你提供的事例,这三种方法都可以使用(你的批处理本身就写错了)。
例如,从wmic或注册表读相应的值,来判断是否为希望修改的值。由于wmic的返回代码比较复杂,所以一般不使用%ERRORLEVEL%来判断wmic是否正常执行。

[ Last edited by Hanyeguxing on 2010-3-28 at 14:52 ]
第3楼 czweb 发表于 2010-03-28 14:46
初级用户 发帖 75 积分 75
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,


是不是要用for循环读取外部文件来判断呀,不太会,帮人到底给写一下行吗
第4楼 Hanyeguxing 发表于 2010-03-28 14:54
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
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楼 czweb 发表于 2010-03-28 15:00
初级用户 发帖 75 积分 75
因为我写一个错误的域、用户名和密码,也是返回成功,

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楼 Hanyeguxing 发表于 2010-03-28 15:02
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
那就读ReturnValue是否为你需要的值来判断呗
第7楼 czweb 发表于 2010-03-28 15:03
初级用户 发帖 75 积分 75
可惜不会写,能帮忙吗
第8楼 lxzzr 发表于 2010-04-01 09:10
初级用户 发帖 12 积分 27
Originally posted by czweb at 2010-3-28 02:46 PM:
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,


错!!!

【1】%ERRORLEVEL%不是不行;
【2】ReturnValue = 0不一定是对的。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023