2014-09-29 164 views
0

请检查以下代码中的错误。我试图压缩一个文件夹的文件并将其放在其他文件夹中。我有94个文件,但是只有80到82个文件或者一些文件正在压缩。我使用的是.bat文件:使用vbscript将文件从一个文件夹复制到另一个文件

@setlocal 
@echo off 

set TIMESTAMP = %DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4% 

::CD C:\Desktop\Batchscripts\TESTZIP 

::md C:\Desktop\Batchscripts\TESTZIP\%TIMESTAMP% 

ECHO ------- BEGIN zip ---------------- 

CScript "C:\Desktop\Batchscripts\TESTZIP\zip.vbs" "C:\Desktop\Batchscripts\%TIMESTAMP%\" C:\Desktop\Batchscripts\TESTZIP\%TIMESTAMP%.zip 

ECHO All production export xml files are completed. please find the location C:\Desktop\Batchscripts\TESTZIP\%TIMESTAMP%.zip 

Pause 

IF NOT %ERRORLEVEL% EQU 0 (goto :error) 

ECHO ------- END zip------------------ 

被调用VBScript:

'Get command-line arguments. 
Set objArgs = WScript.Arguments 

InputFolder = objArgs(0) 
ZipFile = objArgs(1) 

'Create empty ZIP file. 
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) 

Set objShell = CreateObject("Shell.Application") 

Set source = objShell.NameSpace(InputFolder).Items 

objShell.NameSpace(ZipFile).CopyHere(source) 

'Required! 
wScript.Sleep 2000 
+0

zip.vbs代码: '获取命令行参数。 Set objArgs = WScript.Arguments InputFolder = objArgs(0) ZipFile = objArgs(1) '创建空的ZIP文件。 (“Scripting.FileSystemObject”)。CreateTextFile(ZipFile,True).Write“PK”&Chr(5)&Chr(6)&String(18,vbNullChar) Set objShell = CreateObject(“Shell.Application” ) 设置源= objShell.NameSpace(InputFolder).Items objShell.NameSpace(ZipFile的).CopyHere(源​​) “必选! wScript.Sleep 2000 – 2014-09-29 12:47:36

+0

@Peter Mortensen:我看到你也使用了相同的代码,请你检查一下这里可能存在的问题,因为没有获取所有的文件。 – 2014-09-29 12:48:52

+0

请不要在评论中张贴代码,因为它肯定会变得不可读。编辑你的问题,并在那里添加代码。 – 2014-09-29 13:06:03

回答

1

最有可能您的VBScript不等待足够长。尝试将值增加到5000或10000毫秒。

CopyHere方法的问题是它异步运行,即它立即返回而不是等到操作完成。但是,脚本退出时,Shell.Application对象会自动销毁,因此会终止正在进行的操作CopyHere。如果那个操作没有完成,那么你的zip档案将会是一对夫妇档案。

+0

你好Ansgar,是的,这一次工作,感谢您的帮助,我会尝试不同数量的文件。 – 2014-09-29 14:26:38