十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
vb.net2008给你个在TextBox1中显示批处理时显示的内容的例子
目前创新互联建站已为上千家的企业提供了网站建设、域名、网络空间、网站托管、服务器托管、企业网站设计、天山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
比如:c:\1.bat的内容是dir *.*/w 就会显示当前工作目录下的内容,有可能不是在c盘根目录下的。
dir c:\*.*/w 就可以不受当前目录影响,显示c盘根目录下的内容。
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'将显示的内容写进Process.StandardOutput流中
Dim My_p As New Process()
Dim My_P_S As New ProcessStartInfo("c:\1.bat")
My_P_S.UseShellExecute = False
My_P_S.RedirectStandardOutput = True
My_p.StartInfo = My_P_S
My_p.Start()
'读取数据并在TextBox1中显示
Dim myStreamReader As StreamReader = My_p.StandardOutput
' Read the standard output of the spawned process.
Dim myString As String = myStreamReader.ReadToEnd()
TextBox1.Text = myString
My_p.Close()
End Sub
End Class
你的问题补充已经跟原来的提问差距很大了,实际上已经是两个问题了,修改批处理:比如
dir c:\*.*/w|find "B"
echo. pause
dos窗口会自动关闭
你要这样子写
a = Shell(App.Path "\data\A.bat", vbNormalFocus)
忘记说了,补充一下
还有说明一下,当你用(App.Path 来指定路径的时候,在VB6里按F5运行是会找不到此文件的。你要把程序打包成exe后才有效果的,确保 你的exe文件和Data在一个目录中。!
因为你按F5运行后你的当前应用程序路径是你的VB的安装路径,而不是你的 当前工程文件所保存的路径。。。。。
批处理产生于DOS年代,哪时的电脑是386、486... 运行的程序是在 DOS 的提示符下打入命令,命令是一行英文字符,有内部命令和外部命令两种,内部命令是系统启动后就已经驻留内存可以运行的命令,外部命令就是我们现在所说的可执行文件(*.COM 和 *.EXE),命令输入错了,电脑就不会帮你干活,后来微软搞了一个 WINDOWS31 ,把命令改为图标,只要双击图标电脑就工作了,现在我们用的WINDOWS就是WINDOWS31的高版本,所以现在的人没有用命令操作电脑的体会。而批处理就是用一个文件把很多个DOS命令组合在一齐实现一定的功能。是一种应用层的简单编程,编程能力有限,还会常因找不到外部命令而不能正常工作.
VB是WINDOWS下的一种Basic语言,是能生成可执行文件的编程语言,是真正的编辑语言,如果你对WINDOWS API 熟悉,VB几乎能实现你所要的全部功能.VB.NET更加把VB提升到与C#为同一层次的地位.
VB和批处理为什么能同时写在一起呢?批处理能加入VB写的可执行文件,VB可以用 Shell 或 API 来调用批处理文件.
我觉得应该有两种解决方法
1:把patran的安装路径添加到系统环境变量的path属性下;
2:在你的批处理里面改为如下格式,patran完整路径(如c:\MSC.software\········patran.exe)+ "-sfp patran.ses",也就是下面这种情况试下“c:\MSC.software\········patran.exe -sfp patran.ses -b -ans yes”
调用c:\1.bat,可以这样:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Shell("cmd.exe /c call c:\1.bat", AppWinStyle.NormalFocus)
End Sub
在 Form_Load 写入
Dim cmd As String = Command()
cmd 就是传入的参数了。
就看你怎么利用了。