从Visual Basic到批处理文件的参数

时间:2013-12-31 11:05:59

标签: vba batch-file

我知道这很容易。我是管理员,而不是FT程序员。我试图将prjFilename和emailFilename参数传递给批处理文件。为了确保值正确,我在Else分支中弹出一个MsgBox。那里一切都很好。问题是,当我尝试在批处理文件中使用该变量时,该变量字符串在文件名路径的第一个空格处被截断。

因此,当我回显%1%来测试它时,我得到一个截断的路径。任何帮助表示赞赏。

    If prjFilename = "" Then
        MsgBox("Please select a GSA Project File to process")

    ElseIf emailFilename = "" Then
        MsgBox("Please select a list of emails to process")

    Else
        Dim DosRun As Process = New Process
        Dim strArgs As String
        MsgBox(prjFilename)
        MsgBox(emailFilename)
        strArgs = prjFilename & " " & emailFilename
        MsgBox(strArgs)
        DosRun.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
        DosRun.StartInfo.FileName = "C:\Users\Eric\Desktop\KRUSH\krush.cmd"
        DosRun.StartInfo.Arguments = prjFilename & " " & emailFilename
        DosRun.Start()

1 个答案:

答案 0 :(得分:2)

如果prjFilenameemailFilename中的任何一个包含空格,则在将它们传递给批处理文件时,需要在它们周围放置双引号字符。 VBA中的双引号字符文字是""""(我不是你的意思)。

strArgs = """" & prjFilename & """" & " " & """" & emailFilename & """"

我通常在模块的顶部定义Public Const vbQuote as String = """"并使用它。