如何在命令提示符中使用带有路径引用的多个命令

时间:2017-02-05 18:04:22

标签: vb.net command-prompt

我是这个论坛的新手,所以如果我以错误的方式提出这个问题或者不够具体,请纠正我。 在VB.NET中进行编码时,我试图传递多个命令,并且参数包含对路径的引用:

Dim p As New Process
Dim pi As New ProcessStartInfo
pi.Arguments = " " & "/K """ & "C:\program files\gdal\gdalshell.bat" & """ & " & "cd C:\program files\gdal" & _
         " & " + "gdal_translate" + " -of Jpeg -outsize 2000 2000 """ & "D:\box sync\my box (907070)\RIS_RHDHV_Overgang\GDAL\test2.xml" & """ "
pi.FileName = "C:\windows\syswow64\cmd.exe"

p.StartInfo = pi
p.Start()

命令提示符返回:    ' C:\ PROGRAM'不被识别为内部或外部命令,可操作程序或批处理文件。

我对此事做了一些研究,发现: vb.net How to pass a string with spaces to the command line

然而,这仍然无法解决问题。当我执行以下代码时,它运行没有问题:

Dim p As New Process
Dim pi As New ProcessStartInfo
pi.Arguments = " " & "/K """ & "C:\program files\gdal\gdalshell.bat" & """ & " & "cd C:\program files\gdal" & _
         " & " + "gdal_translate"
pi.FileName = "C:\windows\syswow64\cmd.exe"

p.StartInfo = pi
p.Start()

对我而言,问题似乎是由参数内的路径引用引起的。我已经阅读并使用了不同的答案来使用多个命令,没有任何运气。

如果有人可以帮我解决这个话题,那将会很棒。

亲切的问候,

斯图尔特

1 个答案:

答案 0 :(得分:0)

首先,作为一个小注释,您不需要在参数的开头添加空格。只有当您将整个命令(包括可执行文件)写入一行时才会这样做。

现在,将路径作为参数传递的正确方法是用引号括起来。所以这样的事情应该做:

(请注意,我还缩短了一些不必要的连接等。)

pi.Arguments = "/K """"C:\program files\gdal\gdalshell.bat"" & cd ""C:\program files\gdal"" & " & _
         "gdal_translate -of Jpeg -outsize 2000 2000 ""D:\box sync\my box (907070)\RIS_RHDHV_Overgang\GDAL\test2.xml"""""

修改

我发现您还需要在/K之后将整个文本放在引号中才能生效。