2013-10-16 5 views
14

मेरे पास निर्देशिका में फ़ाइलों का समूह है। मैंने मेकबैब का पालन करने की कोशिश की लेकिन इसमें किसी फ़ोल्डर में सभी फ़ाइलों को कैब फ़ाइल में शामिल नहीं किया गया है।मेककैब - फ़ोल्डर में सभी फ़ाइलों से एक कैब फ़ाइल बनाएं

makecab /d "C:\Users\crtorres\Documents\- SouthPacific Project 2014\- Projects\Sales Doc Center\New Region" test.cab 

निम्न कार्य करता है लेकिन कैब फ़ाइल में केवल प्रकट फ़ाइल होती है। makecab Manifest.xml test.cab

उत्तर

12

/डी स्विच फ़ाइलों के लिए इस्तेमाल नहीं किया जा सकता है:

@echo off 
dir /s /b /a-d >files.txt 
makecab /d "CabinetName1=test.cab" /f files.txt 
del /q /f files.txt 

More info

संपादितhere एक स्क्रिप्ट है कि पूरे निर्देशिका संरचना को बरकरार रखता है पाया जा सकता है

+0

"files.txt" के कुछ मामलों में फ़ाइल पथ और नाम में रूप में अच्छी तरह "files.txt" में जोड़ा जाता है। फिर files.txt भी test.cab में होगा। – Hinek

22

मैंने आखिरकार एक स्क्रिप्ट बनाई है जो वास्तव में इसे सही ढंग से कर सकती है (पावरहेल के साथ)

यह WSPBuilder का उपयोग नहीं करता है क्योंकि मुझे अक्सर अनुबंधित किया जाता है और यह नए सॉफ़्टवेयर/अतिरिक्त फ़ाइलों को डाउनलोड करने के लिए असुविधाजनक है। यह ओओटीबी काम करता है।

function compress-directory([string]$dir, [string]$output) 
{ 
    $ddf = ".OPTION EXPLICIT 
.Set CabinetNameTemplate=$output 
.Set DiskDirectory1=. 
.Set CompressionType=MSZIP 
.Set Cabinet=on 
.Set Compress=on 
.Set CabinetFileCountThreshold=0 
.Set FolderFileCountThreshold=0 
.Set FolderSizeThreshold=0 
.Set MaxCabinetSize=0 
.Set MaxDiskFileCount=0 
.Set MaxDiskSize=0 
" 
    $dirfullname = (get-item $dir).fullname 
    $ddfpath = ($env:TEMP+"\temp.ddf") 
    $ddf += (ls -recurse $dir | ? {!$_.psiscontainer}|select -expand fullname|%{'"'+$_+'" "'+$_.SubString($dirfullname.length+1)+'"'}) -join "`r`n" 
    $ddf 
    $ddf | Out-File -encoding UTF8 $ddfpath 
    makecab /F $ddfpath 
    rm $ddfpath 
    rm setup.inf 
    rm setup.rpt 
} 

कृपया मुझे बताएं कि क्या मैं कुछ गलत कर रहा हूं और/या बेहतर हो सकता हूं।

संदर्भ के लिए

:

http://www.pseale.com/blog/StrongOpinionSayNoToMAKECABEXE.aspx

+7

यह सुंदर है, लेकिन, उपयोग: ओपन पावरशेल; इस फ़ंक्शन को PowerShell में पेस्ट करें; एंटर दबाएं; संपीड़न-निर्देशिका। \ Some-dir-to-compress। \ Filename.cab – turiyag

+1

कुछ पुराने उपयोग इस बात से अवगत रहें कि कोई भी इस पुराने पोस्ट में चलता है या नहीं। गंतव्य एक शाब्दिक रास्ता नहीं लेगा। आप वर्कअराउंड के रूप में किसी स्थान को पुश/पॉप कर सकते हैं। कमांड "कंप्रेसर-डायरेक्टरी सी: \ temp। \ temp.cab"
जैसा कुछ दिखता है इसके अतिरिक्त 2 गीगाबाइट्स - 512 बाइट्स से ऊपर जाने पर कैब फ़ाइलों में समस्याएं होती हैं। एक अतिरिक्त विकल्प के रूप में, संपीड़न प्रकार LZX को वैकल्पिक के रूप में सेट किया जा सकता है। – Lorek

संबंधित मुद्दे