如何在命令提示符下将多个命令与路径引用一起使用



我是这个论坛的新手,所以如果我问错了问题或不够具体,请纠正我。在 VB.NET 编码时,我尝试传递多个命令,以及一个包含对路径引用的参数:

Dim p As New Process
Dim pi As New ProcessStartInfo
pi.Arguments = " " & "/K """ & "C:program filesgdalgdalshell.bat" & """ & " & "cd C:program filesgdal" & _
         " & " + "gdal_translate" + " -of Jpeg -outsize 2000 2000 """ & "D:box syncmy box (907070)RIS_RHDHV_OvergangGDALtest2.xml" & """ "
pi.FileName = "C:windowssyswow64cmd.exe"
p.StartInfo = pi
p.Start()

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

我对此事进行了一些研究,发现:vb.net 如何将带空格的字符串传递给命令行

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

Dim p As New Process
Dim pi As New ProcessStartInfo
pi.Arguments = " " & "/K """ & "C:program filesgdalgdalshell.bat" & """ & " & "cd C:program filesgdal" & _
         " & " + "gdal_translate"
pi.FileName = "C:windowssyswow64cmd.exe"
p.StartInfo = pi
p.Start()

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

如果有人能在这个话题上帮助我,那就太好了。

亲切问候

斯图尔特

首先,作为一个小注释,您不需要在参数的开头添加空格。仅当您在一行中编写整个命令(包括可执行文件(时,才会执行此操作。

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

(请注意,我还缩短了一些不必要的串联等。

pi.Arguments = "/K """"C:program filesgdalgdalshell.bat"" & cd ""C:program filesgdal"" & " & _
         "gdal_translate -of Jpeg -outsize 2000 2000 ""D:box syncmy box (907070)RIS_RHDHV_OvergangGDALtest2.xml"""""

编辑:

我发现您还必须将/K后的整个文本放在引号中才能正常工作。

最新更新