Vbscript 从VBS运行后的CMD

Vbscript 从VBS运行后的CMD,vbscript,cmd,robocopy,Vbscript,Cmd,Robocopy,我遇到的错误是vbs在打开后没有将robocopy传递给cmd。我可以看到CMD窗口打开,但它从未通过robocopy命令。请帮忙 On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") Set objRUN = CreatObject("wscript.shell") If objFSO.FileExists("C:\Program Files\SAFARI Montage\SAFARI Mo

我遇到的错误是vbs在打开后没有将robocopy传递给cmd。我可以看到CMD窗口打开,但它从未通过robocopy命令。请帮忙

On Error Resume Next

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRUN = CreatObject("wscript.shell")

If objFSO.FileExists("C:\Program Files\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3\vlc.exe") Then
    Set objFolder = objFSO.GetFile("C:\Program Files\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3\vlc.exe")
    MsgBox "Already Installed", 48, "32bit Search"
    Set objFolder = Nothing

ElseIf objFSO.FileExists("C:\Program Files (x86)\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3\vlc.exe") Then
    Set objFolder = objFSO.GetFile("C:\Program Files (x86)\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3\vlc.exe")
    MsgBox "Already Installed", 48, "64bit Search"
    Set objFolder = Nothing 

ElseIf objFSO.FileExists("C:\Program Files (x86)\SAFARI Montage\SAFARI Montage Media Player\SAFARIMontageMediaPlayer.exe") Then 
       objRUN.run """CMD robocopy /E ""\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3"" ""C:\Program Files (x86)\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3""",1,true
    Set objFolder = Nothing
    Set objshell = Nothing

ElseIf objFSO.FileExists("C:\Program Files\SAFARI Montage\SAFARI Montage Media Player\SAFARIMontageMediaPlayer.exe") Then 
       objshell.Run """CMD robocopy /E ""\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3"" ""C:\Program Files\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3""",1,true
    Set objFolder = Nothing
    Set objshell = Nothing

Else MsgBox "VLC not installed properly", 16, "Failed"

End If

命令行开头的双引号太多。改变

objRUN.run """CMD ...
进入

其余的线路保持原样


更一般的说明是:不要在脚本中使用全局错误恢复。如果出于某种原因,您必须使用错误处理,请尽可能在本地执行,设置适当的错误处理例程,然后尽快禁用错误处理。

您引用的是完整的cmd行。只需引用已执行的命令

objshell.Run "CMD /c ""robocopy ""\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3"" ""C:\Program Files\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3"" /e "" ",1,true
但让Run方法直接执行robocy更好/更容易


首先,在命令提示符下运行此命令,以确保其按预期工作:

robocopy /e "\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3" "C:\Program Files (x86)\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3"
如果是这样,只需要将其转换为VBScript字符串。如果引号变得混乱,那么可以一步一步地构建它。我不使用引号,而是使用Chr34使事情更简单:

strCmd = "robocopy /e"
strCmd = strCmd & " "
strCmd = strCmd & Chr(34) & "\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3" & Chr(34)
strCmd = strCmd & " "
strCmd = strCmd & Chr(34) & "C:\Program Files (x86)\SAFARI Montage\SAFARI Montage Media Player\vlc-2.0.3" & Chr(34)
此时可能需要输出命令,以确保它与第一条语句匹配。如果您使用的是CSCRIPT,那么可以使用WScript.Echo将命令字符串输出到控制台。如果使用的是WSCRIPT,则可以使用InputBox显示字符串,以便将其复制并粘贴到命令提示符

WScript.Echo strCmd
' or
InputBox "", "", strCmd
如果它看起来不错,那么继续运行它

objShell.Run strCmd, 1, True

在cmd之后添加/c,没有任何更改我知道robocopy命令确实有效,但是让vbs脚本执行它是另一回事。PS C:\WINDOWS\system32>robocopy\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3 C:\Program Files\SAFARI Montage\SA FARI Montage Media Player\vlc-2.0.3/E当我使用您的方法时,在源目录和目标目录中的空格后出现错误,无法继续。看起来双引号没有起作用。C:\Users\dcamilo\Downloads>robocopy\\JERZYBOYSERVER\Shared Folders\Landing\vlc-2.0.3 C:\Program Files x86\SAFAR I Montage\SAFARI Montage Media Player\vlc-2.0.3/e-------------------------------------------------------robocopy::用于Windows的健壮文件拷贝-----------------------------------------------------开始时间:9月26日,星期五,2014 12:32:27 PM Source-\\JERZYBOYSERVER\Shared\Dest-C:\Users\dcamilo\Downloads\Folders\Landing\vlc-2.0.3\ERROR:无效参数3:C:\Program这是引号和/C的组合。谢谢!我通常不会在全局范围内这样做,但在一个软件自动化程序中使用了一段代码,如果不允许它继续无错误运行,该程序将崩溃。@Jerzy它到底是怎么不工作的?尝试cmd/k,而不仅仅是cmd,以便cmd窗口保持打开状态。它显示了什么输出?
WScript.Echo strCmd
' or
InputBox "", "", strCmd
objShell.Run strCmd, 1, True