2014-09-29 165 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