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




batch-file zip (13)

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

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

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

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

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


Answers

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

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

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


आप एक बीएटी फ़ाइल में लिपटे एक 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

मैं इस सटीक प्रश्न और मेरे शोध से जवाब देने के लिए देख रहा हूं, DiryBoy की प्रतिक्रिया सटीक प्रतीत होती है।

मैंने पाया कि compact.exe प्रोग्राम फ़ाइलों को संपीड़ित करता है लेकिन अत्यधिक संपीड़ित फ़ाइल (या फ़ाइलों का सेट) बनाने के लिए नहीं। यह विंडोज़ में ड्राइव लेटर या विभाजन पर राइट क्लिक करते समय आपको मिलने वाले विकल्प के समान है। आपको सफाई करने का विकल्प मिलता है (अस्थायी फ़ाइलें हटाएं, आदि) साथ ही फ़ाइलों को संपीड़ित करें। संपीड़ित फ़ाइलें अभी भी पहुंच योग्य हैं लेकिन अंतरिक्ष पर कम ड्राइव पर स्थान बनाने के लिए बस संपीड़ित हैं।

मुझे compress.exe भी मिला जो मैंने अपने कंप्यूटर पर किया था। यह ज्यादातर विंडोज मशीनों पर मूल रूप से नहीं है और 2003 संसाधन किट का हिस्सा है। यह एक प्रकार की ज़िप फ़ाइल बनाता है लेकिन यह विंडोज़ सेटअप डिस्क से फ़ाइलों के समान ही समान है (फ़ाइल एक्सटेंशन या नाम के अंतिम अक्षर के रूप में अंडरस्कोर है)। और extract.exe आदेश उन फ़ाइलों को निष्कर्ष निकालता है।

हालांकि, मंत्र है, अगर इसे जीयूआई के माध्यम से मूल रूप से किया जा सकता है तो कमांड लाइन के भीतर बैच, .vbs, या किसी अन्य प्रकार की स्क्रिप्ट के माध्यम से ऐसा करने का एक तरीका है। चूंकि विंडोज़ में एक ज़िप फ़ाइल बनाने के लिए 'भेजना' विकल्प था, मुझे पता था कि कमांड लाइन के माध्यम से इसे करने का कोई तरीका होना चाहिए और मुझे कुछ विकल्प मिल गए।

यहां एक शानदार लिंक है जो दिखाता है कि विंडोज मूल आदेशों का उपयोग करके फ़ाइल को ज़िप कैसे करें।

https://superuser.com/questions/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili

मैंने इसे कई घोंसला वाली फ़ाइलों और फ़ोल्डरों वाली निर्देशिका के साथ परीक्षण किया और यह पूरी तरह से काम किया। बस कमांड लाइन के प्रारूप का पालन करें।

कमांड लाइन के माध्यम से फ़ाइलों को अनजिप करने का एक तरीका भी है जो मैंने पाया। एक तरफ, सिर्फ एक एक्सप्लोरर विंडो खोलता है जो दिखाता है कि ज़िप फ़ाइल की सामग्री क्या है। इनमें से कुछ जावा का भी उपयोग करते हैं जो आवश्यक रूप से विंडोज़ के लिए मूल नहीं है लेकिन यह इतना आम है कि यह लगभग ऐसा लगता है।

https://superuser.com/questions/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default

कमांड लाइन का उपयोग कर फ़ाइल को अनजिप कैसे करें?



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

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

expand MyFile.zip myFile

स्टीवन पेनी के पावरशेल समाधान पर विस्तार करने के लिए, आप इसे 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 की आवश्यकता है।


आप कहते हैं कि आप बिना किसी तृतीय पक्ष सॉफ़्टवेयर के ऐसा करने का प्रयास कर रहे हैं। मुझे यकीन नहीं है कि क्या आप .NET को "तृतीय पक्ष" सॉफ़्टवेयर पर विचार करेंगे।

लेकिन आप .NET में अपनी कमांड लाइन उपयोगिता बना सकते हैं। इसे कोड की कुछ पंक्तियों से अधिक की आवश्यकता नहीं होनी चाहिए।

https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs.110).aspx


PowerShell यह कर सकते हैं

Add-Type -A System.IO.Compression.FileSystem
[IO.Compression.ZipFile]::CreateFromDirectory('foo', 'foo.zip')
[IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar')

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

jar xf test.zip

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

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

यह वास्तव में एक ज़िप नहीं है लेकिन विंडोज टूल्स का उपयोग कर फ़ाइल को संपीड़ित करने का एकमात्र तरीका यह है:

makecab <source> <dest>.cab

डिकंप्रेस करने के लिए:

expand <source>.cab <dest>

उन्नत उदाहरण (ss64.com से):

Create a self extracting archive containing movie.mov:
C:\> makecab movie.mov "temp.cab"
C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe"
C:\> del /q /f "temp.cab"

अधिक जानकारी: makecab , expand , मेकबैब उन्नत उपयोग


ऐसा करना आसान है। फ़िल्टर टैब पर, "केवल तभी दिखाएं जब फ़िल्टर में है, और फिर अपने डोमेन में कुंजी।





windows batch-file zip