【问题标题】:Problem copying files through xcopy using VBScript使用 VBScript 通过 xcopy 复制文件时出现问题
【发布时间】:2011-01-29 08:08:55
【问题描述】:

我正在使用 VBScript 使用 xcopy 复制文件。问题是文件夹路径必须由用户输入。假设我将该路径放在一个变量中,比如h,我该如何在 xcopy 命令中使用这个变量?

这是我试过的代码:

Dim WshShell, oExec, g, h
h = "D:\newfolder"

g = "xcopy $h D:\y\ /E"
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec(g)

我也试过&h,但没用。谁能帮我找出正确的语法?任何帮助表示赞赏。

【问题讨论】:

    标签: vbscript xcopy


    【解决方案1】:

    问题可能是您没有正确使用引号。试试这个

    Dim WshShell, oExec,g,h 
    h= Chr(34) & "D:\newfolder" & Chr(34)
    g="xcopy " & h & " " & Chr(34) & "D:\y\" & Chr(34) & " /E"
    Set WshShell = CreateObject("WScript.Shell")
    
    Set oExec = WshShell.Exec(g)
    

    如果任一路径中有空格,则路径必须包含在引号中,Chr(34) 是引号字符,因此通过将它们插入路径的开头和结尾,它会将路径包含在引号中。

    假设源路径是 C:\Documents and Settings。如果你将它传递给 xcopy,它会认为源是“C:\Documents”,目标是“and”,参数是“Settings\”。这就是为什么你的路径必须用引号引起来,如果你通过 xcopy "C:\Documents and Settings" "C:\" /e 那么它知道源是 'C:\Documents and Settings' 目的地是 'C :\' 并且参数是 '/e'。

    【讨论】:

    • 顺便说一句,要在字符串中插入引号,您可以使用双双引号 ("") 而不是与 Chr(34) 连接。就个人而言,我觉得后者太冗长了。
    【解决方案2】:
    g = "xcopy " & h & " D:\y\ /E"
    

    【讨论】:

    • 我们忘记在 h 和以下代码之间添加一个空格。应该是:g="xcopy " & h & " " & "D:\y\ /E"
    • 你可以这样做。如果你仔细看,我把空格放在引号内,在 D: 前面。
    【解决方案3】:

    VBscript 变量仅通过其名称引用,因此不需要像 $ 或 & 这样的前缀。我想其他建议会起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 2018-09-25
      • 2019-11-02
      • 2021-11-01
      相关资源
      最近更新 更多