2017-08-01 140 views
0

我有這樣的文件夾。如何使用VBScript將文件夾的每個子文件夾壓縮爲ZIP壓縮文件?

  • 主文件夾
    • SUB1
    • SUB6
    • SUB8

我想這些文件夾壓縮到sub1.zipsub6.zipsub8.zip使用VBScri PT。

我用這個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 

對於轉換使用批處理文件中的每個文件夾是這樣的:

set /p "xxx=enter your subfolder name" 
cscript.exe zip.vbs "%xxx%" "%xxx%.zip" 

如何壓縮每個子文件夾到一個ZIP壓縮文件,但不刪除夾?

我不是程序員。我不知道如何使用作爲循環來輸入文本文件。我沒有任何外部軟件,如WinRAR7-Zip

+0

你知道,7-Zip是免費的,'7za.exe'(架 - 單獨版本)根本就不需要安裝,只需複製到批處理文件所在的目錄中即可?使用'7za.exe',整個壓縮任務是批處理文件中的單個命令行。 – Mofi

回答

0

是否需要從批處理文件調用VBScript?如果沒有,你可以試試這個代碼。此代碼獲取當前文件夾中所有文件夾的列表並將其壓縮。所以如果你在主文件夾中運行它,你會得到sub1.zip,sub6.zip,sub8.zip和原始文件夾保持不變。但是,子文件夾只能包含文件,否則創建的zip文件將爲空。

Set fso = CreateObject("Scripting.FileSystemObject") 
Set objShell = CreateObject("Shell.Application") 
Set currentFolder = fso.GetFolder(".") 

For each folder in currentFolder.SubFolders 
'Create empty ZIP file. 
zipName = folder.Name + ".zip" 
fso.CreateTextFile(zipName, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) 
Set zipFile = fso.GetFile(zipName) 
Set source = objShell.NameSpace(folder.Path).Items 

objShell.NameSpace(zipFile.Path).CopyHere(source) 

Next 

'Required! 
wScript.Sleep 2000 
0

如果您在批處理文件做這樣的:

set /p "xxx=enter your subfolder name" 
copy %xxx% %xxx%1 
cscript.exe zip.vbs "%xxx%" "%xxx%.zip" 

應該做的伎倆

相關問題