2016-04-19 25 views
0

アプリケーションにコマンドライン引数を使用してフォルダパスを渡そうとしています。vb.netは、コマンドライン引数としてフォルダパスを受け取ります。

問題:私のフォルダパスには、その文字列に空白" "が含まれています。私は、アプリケーション内のコマンドライン引数を読んだとき、私は私の道は" "

Sub Main() 

    Dim arguments As String() = System.Environment.GetCommandLineArgs() 
    For Each Arg As String In arguments 
     Console.WriteLine("Argument : " & Arg) 
    Next 

    Console.ReadLine() 

End Sub 

空間上の断片に切断取得編集:私の議論を構築するために追加されたコード

Private Sub btn_Copy_Click(sender As Object, e As EventArgs) Handles btn_Copy.Click 

    Dim args(3) As String 
    args(0) = """" & tb_CopyFromPath.Text & """" 
    args(1) = """" & tb_CopyToPath.Text & """" 
    args(2) = """" & tb_ItemTag.Text & """" 
    args(3) = """" & tb_Prefix.Text & """" 

    Dim argument As String 
    argument = args(0) & " " & args(1) & " " & args(2) & " " & args(3) 

    Process.Start("J:\VB.NET - EM AddIn\EM_Design_AddIn\CopyDesign\bin\Debug\CopyDesign.exe", argument) 
End Sub 

この結果ではありませんはい。最初のパスの最初の引数に2番目のパスが含まれるようになりました。

Screenshot


編集:デバッグからの値の結果を追加します。

"""C:\VaultWorkspace\cadcampc\03-Vessel configurator - R2.0\Nozzles\WN_RF_ASME_B16.5\"" ""C:\VaultWorkspace\cadcampc\03-Vessel configurator - R2.0\Test Copy Design\N03"" ""N3"" ""12345-3""" 
+0

は、あなたが文字列 引数=引数として '薄暗い引数の値を提供することができます(0)& ""デバッグ中に&args(1)& ""&args(2)& ""&args(3) '? – user2216

+0

私はアイデアを持っています:) 'tb_CopyFromPath.Text'値にダブルクォートで入力した可能性はありますか?コマンドラインに2つの二重引用符 '' 'を入力すると、それは1のように受信されます。 (これは引数に二重引用符を書く方法です) – user2216

+0

私のmsgboxの結果を追加しました。デバッグが必要な場合は、いくつかの出力設定を変更して処理を進める必要があります。 –

答えて

3

非常に簡単です。ちょうど"を使用してください。 test test testパラメータを渡すと、3つの引数が得られます。しかし、test "test test"と書くと、testtest testの2つのパラメータが表示されます。

1

二重引用符で囲んでください。

すなわち:

app.exe "C:\Sub folder 1\Sub folder 2" 

あなたはコードでそれを行う場合:

Process.Start("app.exe", """" & path & """") 

引用符は、引数の開始と終了を指定します。


EDIT:あなたの代わりにこれを行うことができますあなたの場合は

argument = """" & args(0) & """ """ & args(1) & """ """ & args(2) & """ """ & args(3) & """" 
+0

こんにちは!返信いただきありがとうございます。あなたの答えを実装しようとしましたが、失敗しました。私は詳細を編集して質問を編集しました。多分あなたは私が間違っていることを見ることができますか? –

+0

私はいくつかの修正(トリムを追加)を提案します: 'Process.Start(" app.exe "、" "&path.Trim( '" "')" "" ")' – user2216

+0

@ user2216:一重引用符はありませんパスがPath.Combine()のように正しく構築されている場合でも、二重引用符は使用できません。 –

関連する問題