设为首页 收藏本站
查看: 1440|回复: 0

vbScript中WScript.Shell对象的run和exec使用心得

[复制链接]

尚未签到

发表于 2017-5-16 09:56:59 | 显示全部楼层 |阅读模式
<!--[endif]-->  http://blog.csdn.net/zmxj/archive/2009/02/25/3937372.aspx
  WScript.Shell象提供了run和exec两个方法,最近目中需要在vbscript脚本中用pscp从linux服器上copy文件。本来使用了exec方法,以下代
  Set exeRs = objws.Exec("pscp -r -scp -pw" & password & " " & loginid & "@"& host & ":" & data_path & fileName & "" & windows_path)
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
  但在测试候,当拷的文件比大,拷贝时间较长候就出cmd窗口死在那里不了的情况,直接在cmd窗口中运行pscp拷相同的文件就可以正常 束。也找不到是什原因,于是改成run方法一下,果run方法是可以正常束的,但是原来的代中有需要取得cmd的控制台出信息,而run却 不方便取得控制台信息,最后只能先把控制台信息重定向到文件中,然后程序在取。最后一下run和exec两个方法的区的一些理解:
  两个方法的声明如下
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
  FunctionExec(ByVal Command As String) As WshExec
  FunctionRun(ByVal Command As String, [ByVal WindowStyle], [ByVal WaitOnReturn]) AsInteger
  可以看出几点区
  1,run的返回是一个整数,就是0或1成功和失两个状,而exec方法的返回是一个象,从返回象中可以得控制台出信息和控制台错误信息,即StdOut和StdErr属性等。例如:
  Set exeRs = objws.Exec("pscp -r -scp -pw 。。。。"
  errMsg = exeRs.StdErr.ReadAll()
  stdMsg = oExec.StdOut.ReadAll()
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
  可以取道控制台错误和控制台信息。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
  2,Run 的后两个参数,一个是cmd窗口的格,一个是是否等待行完成。最后一个参数很有用,如果你希望等待本次cmd行的程序束后,在行 objws.Exec后面的句的,只要个参数true就可以了,否后面的句将不等待cmd窗口完成,直接运行(我们项目就有这个需求,从服务器上拷贝一个文件到本地后,马上要打开这个文件操作,如果文件没有拷贝完就去操作就会出错的。)。另外,如果你使用exec 方法的候,如果希望等待cmd中程序行完后,在行后面的句,也可以通下面的方法:
  oExec.StdErr.ReadAll()或者oExec.StdOut.ReadAll(),道理上也应该好理解,要得到出的信息,肯定要cmd行完后才会有出的。
  参数的详细信息可以参考msdn
  http://msdn.microsoft.com/zh-cn/library/ateytk4a(en-us,VS.85).aspx
  http://msdn.microsoft.com/zh-cn/library/d5fk67ky(en-us,VS.85).aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-377987-1-1.html 上篇帖子: 工作中需要写一个shell用来查询符合条件的上下若干条记录 下篇帖子: 利用shell脚本修正代码风格
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表