【发布时间】: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 时,我无法控制目录或文件名。有什么想法可以复制到路径和文件名中都包含空格的目的地不调用xcopy 或copy 命令?
================================================ ========================== 添加更多信息,我尝试了你的建议,但我仍然遇到同样的错误。该脚本通过命令提示符执行,例如,
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 同样,您正在使用嵌套双引号创建变量
TARGET和PARM。别这样了。
标签: vbscript file-copying