我知道这很容易。我是管理员,而不是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()
答案 0 :(得分:2)
如果prjFilename
或emailFilename
中的任何一个包含空格,则在将它们传递给批处理文件时,需要在它们周围放置双引号字符。 VBA中的双引号字符文字是""""
(我不是你的意思)。
strArgs = """" & prjFilename & """" & " " & """" & emailFilename & """"
我通常在模块的顶部定义Public Const vbQuote as String = """"
并使用它。