我不能 Wscript.运行由子例程创建的命令



我有一个文件夹/子文件夹组合数组。我的子例程获取文件夹组合,以及常量路径和提供的日期戳,并构建命令,返回变量"rcmd"—

For each location in myArray
    Call RoboCopy
    MsgBox rcmd
Next

'Sub for the robocopy command   
Sub RoboCopy
    infolder = location
    arr2 = Split(location,"")
    outfolder = arr2(0)
    rcmd = "robocopy " & IN_PATH & "" & infolder & " " & OUT_PATH & "" _
        & outfolder & " /XO /MAXAGE:2 /NP /Log+:C:OKC_v13_to_v15_copy_" & stamp & ".log"
End Sub

如你所见,我现在有"MsgBox"帮助。MsgBox总是正确地显示我需要的命令。然而,一旦我试图将其更改为-

For each location in myArray
    Call RoboCopy
    Wsh.Run rcmd, 0, true
Next

它不做任何事情。我是否需要提供我试图以不同方式运行的命令到sh. run ?顺便说一下,sh已经被定义为WScript.Shell。

我不使用Robocopy,但我有2件事在我的脑海里。首先,名为Wsh的变量不适合我(不确定原因)。第二,更重要的是,我认为,你需要调用CMD.exe,即:

Set WshShell = CreateObject("WScript.Shell")
For each location in myArray
    Call RoboCopy
    WshShell.Run "cmd /c " & rcmd, 0, True
Next

很多事情都可能出错

  1. 删除/禁用所有"On Error Resume Next"
  2. 在命令前添加"%comspec%/K",并将.Run调用中的intWindowStyle参数从0更改为1(显示窗口)
  3. 复制MsgBox结果并从命令提示符执行命令

最新更新