以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请问shell函数和Process在建立共享连接时的区别 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=102470) |
-- 作者:九易六 -- 发布时间:2017/6/20 14:09:00 -- 请问shell函数和Process在建立共享连接时的区别 我看到论坛上大家关于局域网建立共享连接的问题,有如下几种代码编写方式: 第一种: shell("net use \\\\192.168.44.202\\e TBFCfs.2109 /user:Administrator",0) 第二种: Shell("cmd.exe /c /q net use \\\\192.168.44.202\\e TBFCfs.2109 /user:Administrator") 第三种: Dim p As new Process() p.StartInfo.FileName = "cmd.exe" p.StartInfo.UseShellExecute = False \'关闭Shell的使用 p.StartInfo.RedirectStandardInput = True \'重定向标准输入 p.StartInfo.RedirectStandardOutput = True \'重定向标准输出 p.StartInfo.RedirectStandardError = True \'重定向错误输出 p.StartInfo.CreateNoWindow = True \'设置不显示窗口 p.Start() p.StandardInput.WriteLine( "net use \\\\192.168.44.202\\ TBFCfs.2109 /user:Administrator") p.StandardInput.WriteLine("exit") 请问这几种编写方式有什么优缺点? 我想用来建立一个到局域网升级文件夹的共享连接。Foxtable当中,是不是要等这个命令执行完毕之后,才会顺序执行后面的Syscmd.Project.Update命令? 因为我发布之后的项目,有的客户端可以正常升级,有的客户端会提示异常,不知道是不是这个语句编写的问题。
|
-- 作者:有点色 -- 发布时间:2017/6/20 14:52:00 -- 第一、第二种,是一样的意思,不论是否执行完成,后面的代码都会马上执行。
第三种,控制比较灵活一些,而且可以等候命令执行完成,才继续执行后面的代码,比较靠谱。 |
-- 作者:九易六 -- 发布时间:2017/6/20 15:33:00 -- Dim p As new Process() p.StartInfo.FileName = "cmd.exe" p.StartInfo.UseShellExecute = False \'关闭Shell的使用 p.StartInfo.RedirectStandardInput = True \'重定向标准输入 p.StartInfo.RedirectStandardOutput = True \'重定向标准输出 p.StartInfo.RedirectStandardError = True \'重定向错误输出 p.StartInfo.CreateNoWindow = True \'设置不显示窗口 p.Start() p.StandardInput.WriteLine( "net use \\\\192.168.44.202\\ TBFCfs.2109 /user:Administrator") p.StandardInput.WriteLine("exit") 现在这种写法,就是等待执行完成之后,再执行后续代码的吗?
|
-- 作者:有点色 -- 发布时间:2017/6/20 15:35:00 -- 是的,执行完成后,再执行你后面的代码。 |
-- 作者:九易六 -- 发布时间:2017/6/21 10:04:00 -- 再进一步请问,我想捕获错误,就是当共享连接无法建立的时候,能执行我指定的代码,怎么捕获呢? 我将 p.StartInfo.RedirectStandardError = True \'重定向错误输出 这一句注释掉,也无法捕获错误。应当怎么做才可以呢?
|
-- 作者:有点色 -- 发布时间:2017/6/21 10:09:00 -- 方法一:你可以弹出执行结果,根据弹出内容,决定执行什么。最后写
Dim strRst As String = p.StandardOutput.ReadToEnd()
方法二:你可以在执行完毕以后,尝试访问你共享文件夹的文件,看行不行 http://www.foxtable.com/webhelp/scr/0331.htm
|