我所犯的错误是,vbs在打开后不会将机器人复制传递给cmd。我可以看到CMD窗口打开,但它从未通过机器人复制命令。请帮帮我!
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发布于 2014-09-26 16:15:15
您引用的是完整的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方法直接执行robocopy更好/更容易。
objshell.Run "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发布于 2014-09-26 16:14:45
命令行的开头有太多的双引号。变化
objRUN.run """CMD ...转到
objRUN.run "CMD ...剩下的行保持原样。
更常见的一点是:从不在脚本中使用全局On Error Resume Next。如果出于某种原因,您必须使用错误处理,尽可能在本地执行,设置适当的错误处理例程,然后尽快禁用错误处理。
发布于 2014-09-26 17:18:56
首先,从命令提示符中运行此命令,以确保它按预期工作:
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字符串即可。如果引号变得令人困惑,它可能有助于逐步构建它。我将使用Chr(34)来简化操作,而不是使用引号:
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, Truehttps://stackoverflow.com/questions/26063700
复制相似问题