我有一个文件夹/子文件夹组合数组。我的子例程获取文件夹组合,以及常量路径和提供的日期戳,并构建命令,返回变量"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
很多事情都可能出错
- 删除/禁用所有"On Error Resume Next"
- 在命令前添加"%comspec%/K",并将.Run调用中的intWindowStyle参数从0更改为1(显示窗口)
- 复制MsgBox结果并从命令提示符执行命令