Shell命令使用字符串来确定文件名

时间:2013-10-20 17:06:48

标签: vb.net string shell

我只是想知道是否有人可以在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)

可能是因为它没有识别要包含在文件路径中的字符串?

提前致谢。

戴蒙

2 个答案:

答案 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)