以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教cmd 运行,实在搞不懂?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=144455)

--  作者:hbhb
--  发布时间:2019/12/20 15:04:00
--  请教cmd 运行,实在搞不懂?
Dim p2 As new Process()
p2.StartInfo.FileName = "cmd.exe"
p2.StartInfo.UseShellExecute = False \'关闭Shell的使用
p2.StartInfo.RedirectStandardInput = True \'重定向标准输入
p2.StartInfo.RedirectStandardOutput = True \'重定向标准输出
p2.StartInfo.RedirectStandardError = True \'重定向错误输出
p2.StartInfo.CreateNoWindow = True \'设置不显示窗口
p2.Start()
p2.StandardInput.WriteLine( "ping > D:\\ping.txt" )   

p2.StandardInput.WriteLine("exit")


Dim  dqzfc As String = FileSys.ReadAllText("D:\\ping.txt", Encoding.Default)

Output.Show( dqzfc)

请问为何读取的文件内容不是最新的?非要运行两次?
测试:
1、如果输入p2.StandardInput.WriteLine( "ping1 > D:\\ping.txt" )   输出文件内容为空
1、如果输入p2.StandardInput.WriteLine( "ping > D:\\ping.txt" )    输出文件内容有内容




--  作者:有点蓝
--  发布时间:2019/12/20 15:15:00
--  
文件里是什么内容?怎么样的结果才是正确的?
--  作者:hbhb
--  发布时间:2019/12/20 15:38:00
--  
比如:第一步p2.StandardInput.WriteLine( "ping > D:\\ping.txt" ) , 看看Output.Show( dqzfc)的字符
        第二步改动一下p2.StandardInput.WriteLine( "ping111 > D:\\ping.txt" )  ,执行后 看看Output.Show( dqzfc)的字符 还是第一步返回的字符,在执行一次代码,返回的字符才与文件内容相同。

也就是说FileSys.ReadAllText("D:\\ping.txt", Encoding.Default)读取的内容与文件内容不同步?

--  作者:有点蓝
--  发布时间:2019/12/20 15:55:00
--  
等待一下

p2.StandardInput.WriteLine( "ping >> D:\\ping.txt" )   

p2.StandardInput.WriteLine("exit")

System.Threading.Thread.Sleep(1000)
Dim  dqzfc As String = FileSys.ReadAllText("D:\\ping.txt", Encoding.Default)

Output.Show( dqzfc)

--  作者:hbhb
--  发布时间:2019/12/20 16:18:00
--  
谢谢!一般等待多长时间?以上这些帮助中为什么不写?
--  作者:有点蓝
--  发布时间:2019/12/20 16:23:00
--  
多长时间请自行测试。