-2

VB.NETでアプリケーションを開発した...

 Dim DIAGTOOL_loc As String = Environment.CurrentDirectory & "\folder\file.exe"
 Dim shellexec As New System.Text.StringBuilder
 shellexec.AppendLine("@echo off")
 shellexec.AppendLine("cls()")
 shellexec.AppendLine(": begin()")
 shellexec.AppendLine("cls()")  
 shellexec.AppendLine("START " & DIAGTOOL_loc.ToString)
 shellexec.AppendLine("pause")
 IO.File.WriteAllText("tester.bat", shellexec.ToString())

 System.Diagnostics.Process.Start("tester.bat")

コマンド プロンプトが開くと、file.exe (DIAGTOOL_loc) が実行されますが、CMD が読み込まれると、「Windows は "C:\Users\ ..." を見つけることができません」と表示されます。

しかし、なぜ?どうしたの?DIAGTOOL_loc 変数に登録されているパスは、Process.start(DIAGTOOL_loc) と入力すると機能するため、ファイルが存在します...なぜ cmd で見つからないのですか?

このコマンド:

shellexec.AppendLine("START " & DIAGTOOL_loc.ToString)

file.exeを開く必要があります...しかし、機能しません...

4

2 に答える 2

0

これを試して:

shellexec.AppendLine(String.Format("START """{0}""" , DIAGTOOL_loc)) 

バッチ コマンドも修正します。

 shellexec.AppendLine("cls")   
 shellexec.AppendLine(":begin")   
 shellexec.AppendLine("cls")  
于 2012-08-16T09:54:09.830 に答える
0

生成されtester.batたには、次のような行があります。

START c:\users\some folders\folder\file.exe

ご覧のとおり、パスは引用符で囲まれていないため、パスにスペースが含まれている場合、これは失敗します (これはあなたのものだと思います.

コードもより適切に記述できることに注意してください - System.IO.Path.Combineを使用して、パスの一部を結合します。

 Dim DIAGTOOL_loc As String = _
     """ + Path.Combine(Environment.CurrentDirectory, "\folder\file.exe") + """
于 2012-08-16T09:54:31.513 に答える