vb.net将文件夹路径作为命令行参数传递

时间:2016-04-19 08:55:44

标签: vb.net path command-line-arguments

我试图通过命令行参数将文件夹路径传递给应用程序。

问题:我的文件夹路径在其中包含空格" "。当我在应用程序中读取命令行参数时,我的路径被切割成空间" "

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

这个结果不行。第一个路径的第一个参数现在包含第二个路径的一部分。

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"""

3 个答案:

答案 0 :(得分:3)

很简单。只需使用"即可。 如果您传递test test test个参数,则会获得3个参数。但是如果你写test "test test",你会收到两个参数:testtest test

答案 1 :(得分:1)

只需用双引号传递它。

即:

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

如果您在代码中执行此操作:

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

引号指定参数的开头和结尾。

修改

在你的情况下,你可以这样做:

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

答案 2 :(得分:0)

使用CHR(34)分隔字符串,并在其中包含空格。 在这里查看我的答案: vb.net How to pass a string with spaces to the command line