中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何获取wmic的返回值 上一主题 | 下一主题
czweb
初级用户





积分 75
发帖 75
注册 2009-10-23
状态 离线
『楼 主』:  如何获取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
)

这样子不行,高手来指点一下吧

2010-3-28 14:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

1,执行一个命令,然后读其输出中受否含有关键词来判断。
2,执行一个命令,然后从%ERRORLEVEL%的返回代码来判断。
3,执行一个命令,然后检查被修改对象是否发生正确的变化来判断。

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

[ Last edited by Hanyeguxing on 2010-3-28 at 14:52 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-3-28 14:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
czweb
初级用户





积分 75
发帖 75
注册 2009-10-23
状态 离线
『第 3 楼』:  

%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,


是不是要用for循环读取外部文件来判断呀,不太会,帮人到底给写一下行吗

2010-3-28 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  



  Quote:
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 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-3-28 14:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
czweb
初级用户





积分 75
发帖 75
注册 2009-10-23
状态 离线
『第 5 楼』:  

因为我写一个错误的域、用户名和密码,也是返回成功,

  Quote:
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 ]

2010-3-28 15:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 6 楼』:  

那就读ReturnValue是否为你需要的值来判断呗



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-3-28 15:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
czweb
初级用户





积分 75
发帖 75
注册 2009-10-23
状态 离线
『第 7 楼』:  

可惜不会写,能帮忙吗

2010-3-28 15:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxzzr
初级用户





积分 27
发帖 12
注册 2008-4-26
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by czweb at 2010-3-28 02:46 PM:
%ERRORLEVEL%不行,wmic不管什么参数都是返回成功,只有ReturnValue = 0;时才是对的,

错!!!

【1】%ERRORLEVEL%不是不行;
【2】ReturnValue = 0不一定是对的。

2010-4-1 09:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: