【问题标题】:VBScript CopyFile with spaces带有空格的 VBScript CopyFile
【发布时间】:2019-06-07 19:46:03
【问题描述】:

VBScript 正在接收路径和文件名中包含空格的输入参数:

SOURCE = "c:\temp\testabc"
TARGET = "F:\work\dir space"
PARM   = "Test file.txt"
DEST   = TARGET & "\" & PARM
'…
fso.CopyFile SOURCE, DEST

DEST 看起来像这样:"F:\work\dir space"\"Test file.txt",但 VBScript 会产生错误:

错误和描述的编号是 52 错误的文件名或编号

当我这样做时,copy 命令没有问题:

copy "c:\temp\testabc" "F:\work\dir space"\"Test file.txt"

在将批处理脚本转换为使用 VBScript 时,我无法控制目录或文件名。有什么想法可以复制到路径和文件名中都包含空格的目的地不调用xcopycopy 命令?

================================================ ========================== 添加更多信息,我尝试了你的建议,但我仍然遇到同样的错误。该脚本通过命令提示符执行,例如,

cscript.exe test001.vbs "F:\Work\datafile.txt"

代码 sn-p:

…
Set fso = CreateObject("Scripting.FileSystemObject")
Dest = fso.BuildPath(Target, Parm)
…
Do While retry_counter < retry_max
    WScript.Echo "Retry count ", retry_counter
    fso.CopyFile Source, Dest
    if Err.Number <> 0 Then
        Wscript.Echo "Number of the Error and Description is ", Err.Number, " ", Err.Description
        Err.Clear
    End if
    retry_counter = retry_counter + 1
    WScript.echo now()
    WScript.Sleep retry_sleeper
    WScript.echo now()
Loop
…

显示列表:

--------------------------------------------
Display dictionary contents :
my_id  :  "someuser"
my_source  :  "c:\temp\testabc"
my_target  :  "F:\work\dir space"
my_parm  :  "Test file.txt"
my_idt  :  A12175803
my_idtu  :  IDTU5803
--------------------------------------------

--------------------------------------------
Display variable contents :
Source:  "c:\temp\testabc"
Target:  "F:\work\dir space"
Parm:    "Test file.txt"
Dest:    "F:\work\dir space"\"Test file.txt"
--------------------------------------------

Retry count  0
Number of the Error and Description is  52   Bad file name or number
1/13/2019 5:49:05 PM
1/13/2019 5:49:10 PM
Retry count  1
....

【问题讨论】:

  • 说真的,这个问题在这个网站上出现了多少次?之前已经回答过无数次了,VBScript 现在已经有 20 多年的历史了,您认为没有人需要知道如何封装文件路径以支持带空格的文件路径?
  • Lankymart,提供一个已解决此问题的链接。
  • @et_phonehome 同样,您正在使用嵌套双引号创建变量TARGETPARM。别这样了。

标签: vbscript file-copying


【解决方案1】:

您发布的代码不会产生您声称的错误。事实上,它正是你想要它做的。

要获得您描述的错误,您必须在路径中添加额外的双引号,例如像这样:

DEST = """" & TARGET & """\""" & PARM & """"

或者(也许更有可能)像这样:

TARGET = """F:\work\dir space"""
PARM   = """Test file.txt"""
DEST   = TARGET & "\" & PARM

不要那样做。 FileSystemObject 方法可以很好地处理带有空格的路径。无需尝试自己处理。您可能想要更改的唯一一件事是构建目标路径的方式:

SOURCE = "c:\temp\testabc"
TARGET = "F:\work\dir space"
PARM   = "Test file.txt"
DEST   = fso.BuildPath(TARGET, PARM)

fso.CopyFile SOURCE, DEST

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多