我有下面的VBA代码,我试图在cmd
中运行。路径中有一个空格,我使用引号来处理这个问题。在VBA中处理文件路径中的空间
strWot2Shell = """C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & " -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=" & Chr(34) & ripDirectory & "\LagerRiskRapport%01d.png" & Chr(34) & " " & Chr(34) & filePathAndFileName & Chr(34)
strWot2Shell = Replace(strWot2Shell, "\", "/")
strWot2Shell2 = "cmd.exe /S /C " & strWot2Shell
wsh.Run strWot2Shell2, windowStyle, waitOnReturn
从下面的代码的输出:
cmd.exe /S /C "C:/Program Files/gs/gs9.20/bin/gswin64.exe" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile="G:/Rip/LagerRiskRapport%01d.png" "G:/LagerRiskRapport.pdf"
当我在cmd
运行此照片直接获得:
'C:/Program' is not recognized as an internal or external command,
operable program or batch file.
如果我下面直接在cmd
运行它的工作原理
"C:/Program Files/gs/gs9.20/bin/gswin64.exe" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile="G:/Rip/LagerRiskRapport%01d.png" "G:/LagerRiskRapport.pdf"
三重引用所有的字符串是这样的:
strWot2Shell = """C:\Program Files\gs\gs9.20\bin\gswin64.exe""" & """ -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=""" & Chr(34) & ripDirectory & """\LagerRiskRapport%01d.png""" & Chr(34) & " " & Chr(34) & filePathAndFileName & Chr(34)
给出了这样的输出:
cmd.exe /S /C "C:/Program Files/gs/gs9.20/bin/gswin64.exe"" -dBATCH -dNOPAUSE -sDEVICE=png16m -r600 -sOutputFile=""G:/Rip"/LagerRiskRapport%01d.png"" "G:/LagerRiskRapport.pdf"
像"cmd.exe /S /C"
结果The system cannot find the path specified
引号引起cmd.exe /S /C
。
为什么报价不起作用?
如何输出应该看起来像要使其可以运行?如果复制VBA输出并将其手动写入cmd,它是否运行正常? – Vityata
@Vityata我已更新帖子。当我运行'cmd.exe/S/C ,,,它不起作用,但运行只是'C:/ Progrmas ,,,'的作品。 – g3blv
你可以试试这个:'wsh.Run =“cmd.exe/S/C”&strWot2Shell,windowStyle,waitOnReturn' – Vityata