सवाल पावरहेल में फ़ाइलों को ज़िप / अनजिप कैसे करें?


क्या कोई एक लाइनर है जो PowerShell में फ़ाइलों (* .zip) को ज़िप / अनजिप करेगा?


103
2018-06-03 15:57


मूल


सम्बंधित: सर्वर कोर में पीएस के साथ अनजिप करें - Ruben Bartelink


जवाब:


DotNetZip आपको PowerShell से ऐसा करने की अनुमति देगा। यह एक लाइनर नहीं है, लेकिन लाइब्रेरी आपको पावरशेल स्क्रिप्ट लिखने की अनुमति देगी।

आप COM इंटरफ़ेस का भी उपयोग कर सकते हैं, देखें Windows PowerShell के साथ फ़ाइलों को संपीड़ित करें, फिर Windows Vista साइडबार गैजेट पैकेज करें

गुगलिंग "ज़िप पावरहेल" या "अनजिप पावरहेल" भी उपयोगी परिणाम बदल सकता है।


21
2018-06-03 16:02



+1 लिंक्ड आलेख में सबसे ऊपर दिए गए उत्तर के विपरीत उपयोगी कार्य हैं - Ruben Bartelink
एक Google खोज का सुझाव देने के लिए -1। "अनजिप पावरहेल" के लिए Google खोज में यह शीर्ष स्टैक एक्सचेंज परिणाम है - machine yearning


इस तरह आप इसे पावरहेल से बिना किसी बाहरी उपकरण के पूरी तरह से कर सकते हैं। यह वर्तमान कार्य निर्देशिका पर test.zip नामक फ़ाइल को अनजिप करता है:

$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items())

154
2017-11-14 01:36



मौजूदा फाइलों को ओवरराइट करने के लिए $ गंतव्य का उपयोग करें। ($ zip_file.items (), 0x10)। 0x4 संवाद बॉक्स को छुपाता है, और 0x14 इन्हें जोड़ता है और ओवरराइट करता है और संवाद को छुपाता है। - Peter
रेखा $destination.Copyhere($zip_file.items()) वास्तविक unziping करता है। - Jonathan Allen
यदि आप चाहते थे तो आप ऊपर दिए गए फ़ंक्शन में पार्सल कर सकते हैं: function unzip($filename) { if (!(test-path $filename)) { throw "$filename does not exist" } $shell = new-object -com shell.application $shell.namespace($pwd.path).copyhere($shell.namespace((join-path $pwd $filename)).items()) } - James Holwell
यह स्वीकार्य उत्तर होना चाहिए। - tugberk
यह मेरे लिए विफल रहता है जब ज़िप फ़ाइल में केवल एक फ़ोल्डर होता है (आइटम खाली होता है) - James Woolfenden


अब .NET Framework 4.5 में, एक है ज़िप फ़ाइल कक्षा जिसे आप इस तरह उपयोग कर सकते हैं:

[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)

56
2017-12-30 17:46



यह निश्चित रूप से काम किया - मैंने 400 ज़िप फ़ाइलों को निकालने के लिए इसका इस्तेमाल किया। मैं यह सुनिश्चित करने के लिए जांच करूंगा कि मेरे पास 4.5 नहीं है, लेकिन यह Microsoft.NET के अंतर्गत दिखाई नहीं देता है। - GalacticCowboy
इस होगा अगर एक्स्ट्रेक्ट टू डायरेक्टरी के लिए एक सरल विधि थी और सभी मौजूदा फाइलों को ओवरराइट करने का विकल्प था तो बढ़िया हो। - James Dunne
असेंबली को एड-टाइप के साथ लोड करें, उदाहरण के लिए: ऐड-टाइप -एस्पर स्पेशलएम सिस्टम.आईओ.कंप्रेशन.फाइल सिस्टम - Mike
@JamesDunne - यदि आपके पास अन्य फाइलें नहीं हैं जिन्हें आपको संरक्षित करने की आवश्यकता है, तो 'निकालें-आइटम-रिकवरी $ TargetFolder' का उपयोग कर सकते हैं। अन्यथा, आप जो चाहते हैं वह किया जा सकता है, लेकिन यह गैर-तुच्छ होगा। आपको पढ़ने के लिए ज़िप खोलने की आवश्यकता होगी, और फिर ज़िप को चलाएं, किसी भी पिछले लक्ष्य ऑब्जेक्ट को हटाकर और नए को अनपॅक करना होगा। मेरे लिए भाग्यशाली, आसान समाधान काम करता है। ;) - Mike
चेतावनी दीजिये कि सापेक्ष फ़ाइल स्थान का उपयोग करेंगे नेट वर्तमान निर्देशिका, नहीं पावरशेल एक। देख यहाँ। यह शायद बेहतर है (Resolve-Path $someDir).Path तर्क - jpmc26


आप जांचना चाह सकते हैं पावरशेल सामुदायिक एक्सटेंशन (पीएससीएक्स) विशेष रूप से इसके लिए cmdlets है।


18
2018-06-03 15:59



+1 पीएससीएक्स एड-ऑन cmdlets का एक बड़ा सेट है - मेरी इच्छा है कि मैं चुन सकता हूं और जो कुछ मैं चाहता हूं उसे चुन सकता हूं और जो मैं नहीं करता हूं। ऐसा लगता है कि मेरे पावरहेल उदाहरण में एक बहुत कुछ बदल रहा है .... - marc_s
मैं इस पर आ गया हूं क्योंकि मैं वास्तव में पीएससीएक्स स्थापना को स्वचालित करना चाहता हूं अगर मैं कुछ सहकर्मियों के लिए कर सकता हूं। अब यह देखने का प्रयास कर रहा हूं कि मैं किस प्रकार के मुद्दों में भाग लेता हूं - jcolebrand


मुझे पता है कि यह एक बहुत पुराना सवाल है, लेकिन मैंने देखा कि यह ट्विटर पर जुड़ा हुआ है कि मैंने एक वर्तमान जवाब पोस्ट किया होगा।

पावरशेल 5, वर्तमान में विंडोज 10 या उसके माध्यम से उपलब्ध है विंडोज प्रबंधन फ्रेमवर्क 5 उत्पादन पूर्वावलोकन, 'ज़िप' और 'अनजिपिंग' के लिए दो अंतर्निर्मित cmdlets के साथ आता है:


14
2017-10-17 20:59



यह है एक अच्छा पुराने प्रश्नों को नई जानकारी प्रदान करने के लिए चीज। ;) +1 - jpmc26


मुझे इन्फोसिप बाइनरी का उपयोग करने का सबसे आसान समाधान मिलता है जिसे मैंने वर्षों से उपयोग किया है और यूनिक्स पर्यावरण में उपयोग किया है।

PS> zip -9r ../test.zip * 
PS> cd .. 
PS> unzip -t test.zip Archive:  test.zip
    testing: LinqRepository/          OK
    testing: LinqRepository/ApplicationService.cs   OK
    testing: LinqRepository/bin/      OK 
... 
No errors detected in compressed data of test.zip.

पाठ आउटपुट के चारों ओर एक पावरहेल रैपर लगाने के लिए यह कठोर होगा लेकिन अभ्यास में मुझे कभी इसकी आवश्यकता नहीं है इसलिए मुझे परेशान नहीं किया गया है।

http://www.info-zip.org/


5
2017-08-03 19:40





मुझे भी पसंद है सूचना ज़िप (ज़िप इंजन अधिकांश अन्य ज़िप उपयोगिताओं में पाया गया) और 7-Zip, एक और पसंदीदा जिसमें एक जीयूआई और कमांड लाइन ज़िप उपयोगिता है। मुद्दा यह है कि कुछ अच्छी कमांड लाइन सुविधाएं हैं जो अधिकांश पावरशेल कार्यों के लिए काम करती हैं।

कमांड लाइन उपयोगिताओं को चलाने के लिए कुछ युक्तियां हैं जिन्हें PowerShell के साथ दिमाग में नहीं बनाया गया था:

  • एक निष्पादन योग्य चलाना जो नाम में किसी संख्या से शुरू होता है, इसे एम्पर्सेंड (&) के साथ पेश करें।

    और 7zip.exe

  • प्रत्येक टोकन लपेटें, उपयोगिता कमांड लाइन से उद्धरणों में देखने की उम्मीद कर रही है।

    और "सी: \ पथ अंतरिक्ष \ SomeCommand.exe" "/ पैरामीटर 2" "/ पैरामीटर 2" "पैरामीटर 2 का मान" "मूल्य 2" उद्धरण के साथ "

इसे इस्तेमाल करे:

zip filename.zip (Get-ChildItem somepath\*)

या और भी:

zip filename.zip (Get-Content ListOfFiles.txt)

5
2017-08-11 15:07





जेम्स होलवेल मुझे आपका जवाब पसंद है लेकिन मैंने इसे थोड़ा सा विस्तारित किया

# Example
#unzip "myZip.zip" "C:\Users\me\Desktop" "c:\mylocation"
function unzip($fileName, $sourcePath, $destinationPath)
{
    $shell = new-object -com shell.application
    if (!(Test-Path "$sourcePath\$fileName"))
    {
        throw "$sourcePath\$fileName does not exist" 
    }
    New-Item -ItemType Directory -Force -Path $destinationPath -WarningAction SilentlyContinue
    $shell.namespace($destinationPath).copyhere($shell.namespace("$sourcePath\$fileName").items()) 
}

2
2017-10-11 17:56





WinRAR तर्क स्वीकार करने वाले सीएमडी मोड में काम कर सकते हैं


0
2017-08-03 19:49