Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从Visual Basic到批处理文件的参数_Vba_Batch File - Fatal编程技术网

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

Vba 从Visual Basic到批处理文件的参数,vba,batch-file,Vba,Batch File,我知道这很容易。我是管理员,不是FT程序员。我正在尝试将prjFilename和emailFilename参数传递给批处理文件。为了确保值正确,我在Else分支中弹出一个MsgBox。那里一切都很好。问题是,当我尝试在批处理文件中使用变量时,该变量字符串在文件名路径的第一个空格处被截断 因此,当我回显%1%以测试它时,会得到一个截断的路径。感谢您的帮助 If prjFilename = "" Then MsgBox("Please select a GSA Project

我知道这很容易。我是管理员,不是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()

如果
prjFilename
emailFilename
中的任何一个包含空格,则在将其传递到批处理文件时,需要在其周围放置双引号字符。VBA中的双引号字符文字是
(我不骗你)

我通常在模块顶部将
Public Const vbQuote定义为String=“”
,并使用它

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