首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从VBS运行后的CMD

从VBS运行后的CMD
EN

Stack Overflow用户
提问于 2014-09-26 16:01:43
回答 3查看 601关注 0票数 0

我所犯的错误是,vbs在打开后不会将机器人复制传递给cmd。我可以看到CMD窗口打开,但它从未通过机器人复制命令。请帮帮我!

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-26 16:15:15

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

代码语言:javascript
复制
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更好/更容易。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-09-26 16:14:45

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

代码语言:javascript
复制
objRUN.run """CMD ...

转到

代码语言:javascript
复制
objRUN.run "CMD ...

剩下的行保持原样。

更常见的一点是:从不在脚本中使用全局On Error Resume Next。如果出于某种原因,您必须使用错误处理,尽可能在本地执行,设置适当的错误处理例程,然后尽快禁用错误处理。

票数 0
EN

Stack Overflow用户

发布于 2014-09-26 17:18:56

首先,从命令提示符中运行此命令,以确保它按预期工作:

代码语言:javascript
复制
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)来简化操作,而不是使用引号:

代码语言:javascript
复制
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显示字符串,以便将其复制并粘贴到命令提示符中。

代码语言:javascript
复制
WScript.Echo strCmd
' or
InputBox "", "", strCmd

如果看上去不错,那就去做吧。

代码语言:javascript
复制
objShell.Run strCmd, 1, True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26063700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档