将参数传递给应用程序

时间:2014-08-01 22:17:38

标签: syntax vbscript command-line-arguments

我尝试使用ghostscript为扫描的PDF文件设置特定的页面大小。我可以在脚本与可执行文件位于同一文件夹中时运行该脚本但是当我将.vbs文件移出目录时我无法使其工作。 .run行是我遇到问题的地方。不带参数的exe路径的三重引号打开exe,但我无法弄清楚如何传递参数。 我相信你可以看到我对此很陌生。

strInput = InputBox ("Enter 1 for Landscape or 2 for portrait:")
Set objShell = WScript.CreateObject("WScript.Shell")

If strInput=1 then  
    Call LandScape 
ElseIf strInput=2 Then
    Call Portrait
Else
    MsgBox "Your entry is invalid.  Click OK to exit"
End If

景观子程序:

Sub LandScape
    MsgBox "Your images are Landscape"
    objShell.Run """c:\Program Files\gs\gs9.04\bin\gswin64c.exe""& "-dQUIET"&" -dNOPAUSE"&" -dBATCH"&" -dDEVICEWIDTHPOINTS=2592"&" -dDEVICEHEIGHTPOINTS=1728"&" -dFIXEDMEDIA"&" -sDEVICE=pdfwrite"&" -sOutputFile=OUTPUT.pdf"&" INPUT.pdf""

    'This line works when in same directory: gswin64c -dQUIET -dNOPAUSE -dBATCH -dDEVICEWIDTHPOINTS=2592 -dDEVICEHEIGHTPOINTS=1728 -dFIXEDMEDIA -sDEVICE=pdfwrite -sOutputFile=OUTPUT.pdf INPUT.pdf
End Sub

2 个答案:

答案 0 :(得分:0)

WScript.Shell.Run()的第一个参数是一个完整的命令行。所以你需要

  1. 在参数之间添加空格;
  2. 引用包含嵌入空格的参数。在VB / VBScript中,字符串文字中的两个连续双引号被解释为文字引号。
  3. 您现在可以推断出objShell.Run行的正确语法吗?

答案 1 :(得分:0)

引号可能会引起混淆,因此有时使用Chr(34)会有所帮助,并使可执行文件与其参数分开。

strExe    = "c:\Program Files\gs\gs9.04\bin\gswin64c.exe"
strParams = "-dQUIET -dNOPAUSE -dBATCH -dDEVICEWIDTHPOINTS=2592 -dDEVICEHEIGHTPOINTS=1728 -dFIXEDMEDIA -sDEVICE=pdfwrite -sOutputFile=OUTPUT.pdf INPUT.pdf"

objShell.Run Chr(34) & strExe & Chr(34) & " " & strParams