3

VB.NET 内でのシェル コマンドの使用に関して、だれかが簡単な「はい/いいえ」の回答を提供したり、さらに詳しい情報や支援を提供したりできるかどうか疑問に思いました。

現状では、多数のコンボ ボックスの選択された項目に応じて、シェル コマンドで正しいファイル (この例では .bat.

現在、シェルの私のコードは次のとおりです。

 Shell("C:\Users\Damon\Desktop\batchtest\" & strServer & "_" & strGameType & "_" & strMap & ".bat", AppWinStyle.NormalFocus)

ただし、これにより、ファイルが見つからないことを知らせるエラーが表示されます。ファイルは確かに存在しますが、シェル コマンドが実行しようとしているだけなのだろうかと思います。

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。次の 2 つの変更のいずれかが必要です。

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 に答える