3

我只是想知道是否有人可以提供一个快速的是/否的答案,甚至可以提供有关在 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)

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

提前致谢。

达蒙

4

2 回答 2

2
I just wondered if somebody could provide a quick yes/no answer

简短的回答:不要使用Shell


扩展答案:

你可以使用Process类方法来运行一个进程,这个类包含许多属性来个性化你的进程。

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
于 2013-10-20T17:12:57.773 回答
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)
于 2013-10-20T17:24:24.847 回答