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

How to use multiple commands with path references in 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()

命令提示符returns: '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()

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

如果有人能帮助我解决这个问题,那就太好了。

亲切的问候,

斯图尔特

首先,请注意,您不需要在参数的开头添加 space。仅当您在一行中编写整个命令(包括可执行文件)时才完成。

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

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

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 后的引号中才能正常工作。