2015-05-14 58 views
0

我想使用批處理文件壓縮文件夾。這裏是我的代碼zip.bat:用於壓縮同一目錄中的文件夾的批處理文件

CScript zip.vbs E:\app E:\app.zip 

zip.vbs具有下面的代碼:

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 2000000 

此代碼是正確ziiping的文件夾,但我不想提任何驅動器名稱。我想在任何驅動器中,如果我保留我的bat文件n應用程序文件夾,然後運行bat文件後,它應該壓縮文件夾。 有沒有這個代碼?

回答

0

您需要添加FileSystemObject並使用GetAbsolutePathName函數 - shell.application命名空間不接受相對路徑。

儘管使用睡眠是一個壞主意 - 它會使腳本太慢或將會中斷壓縮。更好的想法是計算來源和目標中的項目,因爲壓縮是事務性的,文件數量是一個可靠的方法來檢查操作是否完成。

您可以檢查也是我zipjs.bat也使用Shell.Application但(它甚至不會創建臨時文件)。它能夠處理相對路徑,以及相對穩健的一切都裝在一個混合jscript\.bat腳本(我已經寫了最常用的腳本之一 - 所以我有一些反饋和修正許多錯誤的:-)需要)這裏

更多信息:How can I compress (/ zip) and uncompress (/ unzip) files and folders with batch file without using any external tools?

Set objArgs = WScript.Arguments 
set fso=CreateObject("Scripting.FileSystemObject"): 
InputFolder = fso.GetAbsolutePathName(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 2000000 
+0

ü可以分享一些簡單的代碼。你的那個提供不起作用 – Dimple

+0

@Dimple - 有些東西不適用於zipjs.bat?你能提供更多的信息嗎?將更新我的答案。 – npocmaka

相關問題