我有下面的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