请检查以下代码有什么问题。我正在尝试压缩一个文件夹的文件并将其放在其他文件夹中。我有94个文件,但只有80到82或者像某些文件正在压缩。我使用的是.bat
文件:
@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 :(得分:1)
很可能你的VBScript没有等待足够长的时间。尝试将值增加到5000或10000毫秒。
CopyHere
方法的问题在于它以异步方式运行,即它立即返回,而不是等到操作完成。但是,当脚本退出时,Shell.Application
对象会自动销毁,从而终止正在进行的CopyHere
操作。如果那个操作没有在那时完成,那么你的zip存档将是一些短文件。