2017-02-26 55 views
0

我看到有一個很好的方式,在這個崗位使用makecab來壓縮整個文件夾

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

使用makecab到壓縮文件夾。上述腳本的一個問題是無法處理長文件名(長擴展名)。例如,如果我有一個文件名爲somelongfilename.extension的文件,在壓縮和解壓縮後,文件名將是SOMELO〜1.EXT。任何人都可以指導我解決問題嗎?

+0

PS。我是一個在stackoverflow上的新手,無法在上述帖子中添加評論。有人能幫我做到嗎? – NickOSU

回答

0

我最近做了類似的事情。但是我使用了一個名爲DDFGenerator的外部工具。它是免費且小巧的,它可以正確處理長文件名。

要使用makecab.exe壓縮結構化文件夾和文件,必須使用DDF文件。我沒有使用您引用的答案中提到的批處理腳本,而是使用DDFGenerator實現相同的目標。

DDFGenerator on CodePlex

說,你要的文件夾 「拉鍊」 在位於C:\ MyFolder文件\ MyData的,使用此命令生成的一個名爲C 「solution.ddf」 一個DDF文件:\ MyFolder文件:

DDFGenerator "C:\MyFolder" 

請注意,DDFGenerator.exe會迭代文件「under」您提供的文件夾,因此要壓縮C:\ MyFolder \ MyData,您應該將「C:\ MyFolder」傳遞給它並確保MyData是唯一的項目C:\ MyFolder文件。

在生成了solution.ddf之後,需要進行小小的調整。只要打開 「solution.ddf」 與你喜歡的任何文本編輯器進行這些更改:

替換這些2號線(在開始的時候):

.Set DiskDirectoryTemplate=CDROM 
.Set CompressionType=MSZIP 

爲:

.Set CabinetName1={YourCabName}.cab 
.Set CompressionType=LZX 
.Set CabinetFileCountThreshold=0 
.Set FolderFileCountThreshold=0 
.Set FolderSizeThreshold=0 
.Set MaxCabinetSize=0 
.Set MaxDiskFileCount=0 
.Set MaxDiskSize=0 

(將{YourCabName}替換爲適合您需要的任何內容) 這些更改確保不會分裂並具有更好的壓縮比。

然後,運行在C makecab命令:\ MyFolder文件建立駕駛室:

makecab.exe /F solution.ddf 

的{} YourCabName會的.cab在C位於:\ MyFolder文件\ disk1的後進行。只要拿走它並刪除已經生成的其他文件。

要 「解壓縮」 駕駛室在當前路徑,使用命令:

expand {YourCabName}.cab /F:* .