我不能Wscript.Run由子程序创建的命令

时间:2013-06-06 15:20:24

标签: vbscript subroutine wsh

我有一系列文件夹/子文件夹组合。我的子程序获取文件夹组合,以及常量路径和提供的日期戳,并构建命令,返回变量“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

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

2 个答案:

答案 0 :(得分:0)

很多事情都可能出错 - 我

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

答案 1 :(得分:0)

我没有使用Robocopy,但我脑子里有两件事。首先,名为Wsh的变量对我不起作用(不确定原因)。其次,更重要的是,我认为你需要致电CMD.exe,即:

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