Vbscript 我能';运行由子例程创建的命令

Vbscript 我能';运行由子例程创建的命令,vbscript,subroutine,wsh,Vbscript,Subroutine,Wsh,我有一个文件夹/子文件夹组合数组。我的子例程获取文件夹组合以及常量路径和提供的日期戳,并生成命令,返回变量“rcmd”- 如你所见,我现在有“MsgBox”帮助。MsgBox始终正确显示我需要的命令。但是,一旦我尝试将其更改为- For each location in myArray Call RoboCopy Wsh.Run rcmd, 0, true Next 它没有任何作用。我是否需要以不同的方式向Wsh.run提供我尝试运行的命令?顺便说一句,Wsh已经被定义为WSc

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

如你所见,我现在有“MsgBox”帮助。MsgBox始终正确显示我需要的命令。但是,一旦我尝试将其更改为-

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

它没有任何作用。我是否需要以不同的方式向Wsh.run提供我尝试运行的命令?顺便说一句,Wsh已经被定义为WScript.Shell。

很多事情可能会出错-我想

  • 删除/禁用所有“出错时继续下一步”
  • 在命令前添加“%comspec%/K”,并将.Run调用中的IntWindowsStyle参数从0更改为1(显示窗口)
  • 复制MsgBox结果并从命令提示符执行命令

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

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

    我复制了消息框文本,命令运行正常,因此我知道这不是命令的语法问题。但是,我将尝试“%comspec%/K”,看看它是如何工作的。我的上帝你在开玩笑吗?!你完全正确,帕纳约。出于某种原因(尽管定义正确),脚本引擎不喜欢我对对象使用“Wsh”。我做了一个快速的“全部替换”,并将所有内容都改为“oShell”,效果很好。谢谢你的小“Wsh不适合我(不知道为什么)…”这是我需要的休息
    Set WshShell = CreateObject("WScript.Shell")
    For each location in myArray
        Call RoboCopy
        WshShell.Run "cmd /c " & rcmd, 0, True
    Next