使用vbscript从一个文件夹到另一个文件夹的文件

时间:2014-09-29 12:47:00

标签: batch-file vbscript zipfile

请检查以下代码有什么问题。我正在尝试压缩一个文件夹的文件并将其放在其他文件夹中。我有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

1 个答案:

答案 0 :(得分:1)

很可能你的VBScript没有等待足够长的时间。尝试将值增加到5000或10000毫秒。

CopyHere方法的问题在于它以异步方式运行,即它立即返回,而不是等到操作完成。但是,当脚本退出时,Shell.Application对象会自动销毁,从而终止正在进行的CopyHere操作。如果那个操作没有在那时完成,那么你的zip存档将是一些短文件。