我只是想知道是否有人可以在VB.NET中使用shell命令提供快速是/否答案,甚至更多信息/帮助。
就目前而言,根据所选的多个组合框的项目,我希望我的shell命令启动正确的文件(在这个实例中是.bat。
我的shell代码目前如下:
Shell("C:\Users\Damon\Desktop\batchtest\" & strServer & "_" & strGameType & "_" & strMap & ".bat", AppWinStyle.NormalFocus)
然而,这会出现错误,指出无法找到该文件。该文件确实存在,但是,我想知道shell命令是否只是尝试执行:
enter Shell("C:\Users\Damon\Desktop\batchtest\", AppWinStyle.NormalFocus)
可能是因为它没有识别要包含在文件路径中的字符串?
提前致谢。
戴蒙
答案 0 :(得分:2)
I just wondered if somebody could provide a quick yes/no answer
简短回答:请勿使用Shell
!
扩展答案:
您可以使用Process
类memthod来运行一个进程,该类包含许多属性来个性化您的进程。
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
一个例子是:
Dim file As String = _
"C:\Users\Damon\Desktop\batchtest\" & strServer & "_" & strGameType & "_" & strMap & ".bat"
Dim p As New Process With {.StartInfo = New ProcessStartInfo With { _
.FileName = "CMD.exe", _
.Arguments = String.Format("/C Start ""Title"" ""{0}""", file), _
.UseShellExecute = False, _
.CreateNoWindow = False, _
.RedirectStandardOutput = True
}}
p.Start()
p.WaitForExit()
首先做一个简单的检查,看文件路径是否真的存在,如果是,则运行它:
Dim file as string = _
"C:\Users\Damon\Desktop\batchtest\" & strServer & "_" & strGameType & "_" & strMap & ".bat"
If Not IO.File.Exists(file) Then
msgbox("Does not exist: " & file)
Else
Process.Start(file)
End If
答案 1 :(得分:1)
你的字符串文字错了。它试图使用反斜杠作为转义字符,尤其是\b
。您需要以下两项更改之一:
Shell("C:\\Users\\Damon\\Desktop\\batchtest\\" & strServer & "_" & strGameType & "_" & strMap & ".bat", AppWinStyle.NormalFocus)
或
Shell(@"C:\Users\Damon\Desktop\batchtest\" & strServer & "_" & strGameType & "_" & strMap & ".bat", AppWinStyle.NormalFocus)