windows - आप केवल विंडोज़ की अंतर्निर्मित क्षमताओं का उपयोग करके स्क्रिप्ट से ज़िप या अनजिप कैसे कर सकते हैं?




batch-file zip (10)

पावरशेल 5.0

Microsoft.PowerShell.Archive आप इसका उपयोग कर सकते हैं:

उदाहरण के लिए:

  • पूरे Test फ़ोल्डर से result.zip बनाएं:

    Compress-Archive -Path C:\Test -DestinationPath C:\result
    
  • निर्दिष्ट Test फ़ोल्डर में result.zip की सामग्री निकालें:

    Expand-Archive -Path result.zip -DestinationPath C:\Test
    

विंडोज़ में आप कुछ फाइलों को zip कर सकते हैं

राइट क्लिक करें -> को भेजें -> संपीड़ित (ज़िप) फ़ोल्डर

और .zip फ़ाइल पर डबल क्लिक करके unzip और फ़ाइलों को निकालें।

क्या किसी तृतीय पक्ष को स्थापित करने की आवश्यकता के बिना उन क्षमताओं को स्क्रिप्ट (.bat फ़ाइल) से लागू करने का कोई तरीका है?

================================================== =
सवाल साइट नियमों के साथ संरेखित करने के लिए संपादित किया गया था, कृपया फिर से खोलें


2013 में वापस, यह संभव नहीं था। एमएस ने इसके लिए कोई निष्पादन योग्य नहीं प्रदान किया।

ऐसा करने के लिए कुछ वीबीएस तरीके के लिए यह लिंक देखें। https://superuser.com/questions/201371/create-zip-folder-from-the-command-line-windows

विंडोज 8 से, नेट फ्रेमवर्क 4.5 डिफ़ॉल्ट रूप से System.IO.Compression.ZipArchive और PowerShell उपलब्ध है, कोई भी इसे प्राप्त करने के लिए स्क्रिप्ट लिख सकता है, https://.com/a/26843122/71312


आप Expand आदेश का उपयोग कर एक ज़िप या देशी संपीड़ित विंडोज फ़ाइल को असम्पीडित कर सकते हैं, उदाहरण के लिए

expand MyFile.zip myFile

आप एक बीएटी फ़ाइल में लिपटे एक vbsscript का उपयोग कर सकते हैं ... यह मेरा कोड है जो एक सापेक्ष पैथ पर काम करता है ...

किसी तीसरे पक्ष के उपकरण या निर्भरताओं की कोई ज़रूरत नहीं है .. बस स्रोत और गंतव्य सेट करें।

फ़ाइल नाम: zipping.bat

echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs
echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs
echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs

'Create empty ZIP file.
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) >> _zipup.vbs

echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs


echo 'Keep script waiting until compression is done
echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs
echo     WScript.Sleep 200 >> _zipup.vbs
echo Loop >> _zipup.vbs

CScript  _zipup.vbs  %SOURCEDIR%  %OUTPUTZIP%

del _zipup.vbs


फ़ाइल को ज़िप करने के लिए:

C:\> zip -9 -m -o file.dat.zip file.dat
  • -9 अधिकतम संपीड़न
  • सफलतापूर्वक संपीड़न के बाद मूल फ़ाइल हटा दें
  • - मूल फ़ाइल के समान ज़िप फ़ाइल की संशोधन तिथि सेट करें
  • बहुत बुरे व्यक्ति को इसे वांछित ज़िप फ़ाइल का नाम देना होगा, इसके बजाय फाइल को संपीड़ित करने के लिए फ़ाइल में .zip एक्सटेंशन जोड़ना होगा

यदि आपके पास जावा स्थापित है, तो आप jar कमांड का उपयोग करके ज़िप संग्रह को संपीड़ित कर सकते हैं:

jar -cMf targetArchive.zip sourceDirectory

सी = एक नई संग्रह फ़ाइल बनाता है।

एम = निर्दिष्ट करता है कि एक मेनिफेस्ट फ़ाइल को संग्रह में जोड़ा नहीं जाना चाहिए।

f = लक्ष्य फ़ाइल नाम इंगित करता है।


यदि आपको स्क्रिप्ट के हिस्से के रूप में ऐसा करने की आवश्यकता है तो जावा का उपयोग करने का सबसे अच्छा तरीका है। बिन निर्देशिका मानना ​​आपके पथ में है (ज्यादातर मामलों में), आप कमांड लाइन का उपयोग कर सकते हैं:

jar xf test.zip

यदि जावा सीधे आपके पास संदर्भ पर नहीं है:

C:\Java\jdk1.6.0_03\bin>jar xf test.zip

स्टीवन पेनी के पावरशेल समाधान पर विस्तार करने के लिए, आप इसे powerhell.exe पर कॉल करके बैच फ़ाइल में शामिल कर सकते हैं:

powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar'); }"

जैसा कि इवान शिलो ने कहा था, यह PowerShell 2 के साथ काम नहीं करेगा, इसके लिए PowerShell 3 या अधिक और .NET Framework 4 की आवश्यकता है।


7-ज़िप का उपयोग करना:

ज़िप : आपके पास एक फ़ोल्डर foo , और इसे myzip.zip पर ज़िप करना चाहते हैं

"C:\Program Files\7-Zip\7z.exe" a  -r myzip.zip -w foo -mem=AES256

अनजिप करें : आप इसे ( myzip.zip ) को वर्तमान निर्देशिका में अनजिप करना चाहते हैं ( ./ )

"C:\Program Files\7-Zip\7z.exe" x  myzip.zip  -o./ -y -r




zip