我试图通过命令行参数将文件夹路径传递给应用程序。
问题:我的文件夹路径在其中包含空格" "
。当我在应用程序中读取命令行参数时,我的路径被切割成空间" "
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
这个结果不行。第一个路径的第一个参数现在包含第二个路径的一部分。
编辑:从调试中添加值结果。
"""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 :(得分:3)
很简单。只需使用"
即可。
如果您传递test test test
个参数,则会获得3个参数。但是如果你写test "test test"
,你会收到两个参数:test
和test 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