কমান্ড লাইন থেকে .zip ফোল্ডার তৈরি করুন - (উইন্ডোজ)


55

কমান্ড লাইনের কোনও ফোল্ডার থেকে একটি .zip ফাইল তৈরি করা সম্ভব, আমি কোনও তৃতীয় পক্ষের এক্সিকিউটেবল ব্যবহার করতে চাই না।

আমি 'সংক্ষেপিত ফোল্ডারে প্রেরণ করুন' এর মতো কিছু ভাবছিলাম কিন্তু কীভাবে এটি করতে হয় তা আমি জানি না ...


2
উইন্ডোজ রিসোর্স কিটে একটি সরঞ্জাম রয়েছে compress.exe
ho1

2
এখানে সার্ভারফল্ট প্রশ্নের একটি লিঙ্ক রয়েছে যা কেবল এটির
ho1

উত্তর:


34

পাওয়ারশেল 5 (ফেব্রুয়ারী 2016) দিয়ে শুরু করে আপনি "সংক্ষেপণ-সংরক্ষণাগার" ব্যবহার করতে পারেন:

Compress-Archive -Path input.txt -DestinationPath output.zip

বা:

Compress-Archive input.txt output.zip

http://msdn.microsoft.com/powershell/reference/5.0/microsoft.powershell.archive/compress-archive


7

আমি মনে করি না উইন্ডোজে অন্তর্নির্মিত জিপ ফাইলগুলির জন্য একটি কমান্ড লাইন আছে ( compressসার্ভার 2003 রিসোর্স কিট ব্যতীত)। আপনাকে একটি তৃতীয় পক্ষ ব্যবহার করতে হবে। সবাই 7zip পছন্দ !


6

আমি আমার স্ক্রিপ্টটি আরও বিভিন্ন উত্স থেকে আমার প্রয়োজনের সাথে আরও ভালভাবে সংযুক্ত করেছি। ".Vbs" এক্সটেনশন সহ কোনও ফাইলটিতে স্ক্রিপ্টটি অনুলিপি করুন এবং আটকান। স্ক্রিপ্টটি মূলত উইন্ডোজ এক্সপির জন্য তৈরি করা হয়েছিল, তবে এটি উইন্ডোজ x x64 আলটিমেটে কাজ করে - উইন্ডোজ বিভিন্ন শেল অবজেক্টের দ্বারা এটি ব্যবহার করবে কিনা তার কোনও গ্যারান্টি নেই।

ব্যবহার: রান বাক্সে বা কমান্ড লাইনে পুট-

"C:\zipper.vbs" "C:\folderToZip\" "C:\mynewzip.zip"

স্ক্রিপ্টের দিকে পথ, উত্স ফোল্ডার, জিপ ফাইল তৈরি করতে (শেষে জিপ অন্তর্ভুক্ত)।

এটি খালি ফোল্ডারগুলি অনুলিপি করবে না তাই যত্নবান হন।

এখানে ভিবিএস কোড ---

Set Args = Wscript.Arguments
source = Args(0)
target = Args(1)

' make sure source folder has \ at end
If Right(source, 1) <> "\" Then
    source = source & "\"
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set zip = objFSO.OpenTextFile(target, 2, vbtrue)
' this is the header to designate a file as a zip
zip.Write "PK" & Chr(5) & Chr(6) & String( 18, Chr(0) )
zip.Close
Set zip = nothing

wscript.sleep 500

Set objApp = CreateObject( "Shell.Application" )
intSkipped = 0

' Loop over items within folder and use CopyHere to put them into the zip folder
For Each objItem in objApp.NameSpace( source ).Items
    If objItem.IsFolder Then
        Set objFolder = objFSO.GetFolder( objItem.Path )
        ' if this folder is empty, then skip it as it can't compress empty folders
        If objFolder.Files.Count + objFolder.SubFolders.Count = 0 Then
            intSkipped = intSkipped + 1
        Else
            objApp.NameSpace( target ).CopyHere objItem
        End If
    Else
        objApp.NameSpace( target ).CopyHere objItem
    End If
Next

intSrcItems = objApp.NameSpace( source ).Items.Count
wscript.sleep 250

' delay until at least items at the top level are available
Do Until objApp.NameSpace( target ).Items.Count + intSkipped = intSrcItems
    wscript.sleep 200
Loop

'cleanup
Set objItem = nothing
Set objFolder = nothing
Set objApp = nothing
Set objFSO = nothing

1
প্রতিশ্রুতিবদ্ধ মনে হচ্ছে, তবে আমি "অবজেক্টের প্রয়োজনীয়: 'ObApp.NameSpace (...)' লাইন 16 এ ত্রুটি
পেয়েছি

আমি একই সমস্যা আছে। উপরের কোডটি কাজ করে না, বা পোস্টারে উল্লেখ করতে ভুলে গেছে এমন সিস্টেমে কিছু অতিরিক্ত জিনিস প্রয়োজন।
শামান

এটি ডাব্লুস্ক্রিপ্ট (vbs পরিবেশ) এবং বেশ কয়েকটি শেল অবজেক্ট ব্যবহার করে। সমস্ত উইন্ডোজ এক্সপি (ব্যবসায়?) এবং উইন 7 আলটিমেট x64 এ ডিফল্টরূপে ইনস্টল করা হয়েছিল। সম্ভবত উইন 8 এর জন্য তারা কি আর আছে?
ডাব্লুএসকিড

2

বিএটি থেকে পাওয়ারশেল স্ক্রিপ্ট চালানো সম্ভব। ব্যাট ফাইলটি জিপ করার জন্য ডিরের পাথ এবং প্যারামিটার হিসাবে ফাইলের নাম জিপ করে।

@echo off
setlocal

rem First parameter - path to dir to be zipped
rem Second parameter- zip file name
set sourceDir=%1
set zipFile=%2

rem Create PowerShell script
echo Write-Output 'Custom PowerShell profile in effect!'    > %~dp0TempZipScript.ps1
echo Add-Type -A System.IO.Compression.FileSystem           >> %~dp0TempZipScript.ps1
echo [IO.Compression.ZipFile]::CreateFromDirectory('%sourceDir%','%~dp0%zipFile%') >> %~dp0TempZipScript.ps1

rem Execute script with flag "-ExecutionPolicy Bypass" to get around ExecutionPolicy
PowerShell.exe -ExecutionPolicy Bypass -Command "& '%~dp0TempZipScript.ps1'"
del %~dp0TempZipScript.ps1
endlocal

1
তবে এই পদ্ধতির সুবিধা কী হবে? কেবল একটি স্থির ফাইলে পাওয়ারশেল স্ক্রিপ্টটি কেন লিখুন এবং এটি পরামিতিগুলি গ্রহণ করতে দেবেন না?
শেঠ

আমি অন্যান্য সমস্ত সমাধান চেষ্টা করেছিলাম। এটি একমাত্র ব্যর্থ-নিরাপদ সমাধান যা পুরোপুরি কার্যকর হয়। সর্বাধিক গুরুত্বপূর্ণ সুবিধাটি হ'ল পাওয়ারশেলের নেটিভ কমান্ডগুলি ব্যবহার করা এবং পুরানো প্রযুক্তি VBScript তৈরি করার দরকার নেই।
দেশমতি

এটি আমার জন্য 2019 সালে একটি পুরানো কর্পোরেট
উইন্ডোজ

1

এখানে একটি দুর্দান্ত লিঙ্ক যা উইন্ডোজ নেটিভ কমান্ড ব্যবহার করে কোনও ফাইল জিপ করবেন তা দেখায়।

আপনি কেবলমাত্র উইন্ডো'র বিল্ট-ইন ফাইলগুলি জিপ করার ক্ষমতা ব্যবহার করে কমান্ড প্রম্পট থেকে একটি ফাইল জিপ করতে পারেন?

আমি একাধিক নেস্টেড ফাইল এবং ফোল্ডার সমন্বিত একটি ডিরেক্টরি দিয়ে এটি পরীক্ষা করেছি এবং এটি পুরোপুরি কার্যকর হয়েছে। কমান্ড লাইনের বিন্যাসটি অনুসরণ করুন।

কমান্ড লাইনের মাধ্যমে ফাইলগুলি আনজিপ করারও একটি উপায় রয়েছে যা আমি পেয়েছি। এক উপায়ে, সবেমাত্র একটি এক্সপ্লোরার উইন্ডোটি খুলুন যা জিপ করা ফাইলের সামগ্রী কী তা দেখায়। এর মধ্যে কিছু জাভা ব্যবহার করে যা প্রয়োজনীয়ভাবে উইন্ডোজগুলির স্থানীয় না হলেও এটি এত সাধারণ যে এটি প্রায় তাই বলে মনে হয়।

উইন্ডোজ 7 এর কি পূর্বনির্ধারিত কমান্ড লাইনে আনজিপ রয়েছে?

https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line


2
আপনার উত্তরের নির্দেশাবলী অন্তর্ভুক্ত করা উচিত। লিঙ্কগুলি যদি বাসি হয়ে যায় তবে আপনার উত্তরটি মূল্যহীন হবে ...
মুনসায়ার

1

এটি একটি পুরানো প্রশ্ন, তবে এটি এখনও প্রাসঙ্গিক।

উইন্ডোজের অবশ্যই জিপ ফাইলগুলি ব্যবহারের জন্য এটির নিজস্ব সংকোচনের অ্যালগরিদম রয়েছে তবে এখানে পাওয়া 7zip ওপেন সোর্স প্রোডাক্টের সাথে তুলনা করলে এটি সত্যিই খুব খারাপভাবে সম্পাদন করে http://www.7-zip.org/

অন্যরা ইতিমধ্যে উইন্ডোজ ফাংশনগুলিতে অন্তর্নির্মিত ব্যবহারের জন্য বিভিন্ন পদ্ধতি নিয়ে আলোচনা করেছেন, আমার সমাধানের জন্য অতিরিক্ত সফ্টওয়্যার ইনস্টল করা প্রয়োজন।

7 জিপ জিপ, আরএআর, সিএবি এবং আইএসও সহ বিস্তৃত ফাইলগুলিকে সমর্থন করে এবং এটির নিজস্ব 7z ফর্ম্যাট।

আপনি কমান্ড লাইন সহায়তা দেখতে পারেন: "সি: \ প্রোগ্রাম ফাইলগুলি \ 7-জিপ \ 7z.exe" - সহায়তা

জিপ সংরক্ষণাগারটিতে একটি সাধারণ অ্যাড সম্পাদন করতে:

"সি: \ প্রোগ্রাম ফাইলগুলি file 7-জিপ \ 7z.exe" একটি ফাইল নাম.জিপ সি: \ পথ


1

এখানে 4 টি ভিন্ন উত্স থেকে অন্য ধারণা দেওয়া হয়েছে; আমার ধারণাগুলি নয়, তবে এটি আমার জন্য কাজ করার জন্য তাদের সংকলন করেছি

<!-- : Begin batch script
@each off

set sourceFolder="c:\test"
set destZip="%userprofile%\desktop\example.zip"

cscript //nologo "%~f0?.wsf" //job:exewsh %sourceFolder% %destZip%

exit /b
GOTO:EOF
----- Begin wsf script --->
<package><job id="exewsh"><script language="VBScript">
'Get command-line arguments.
Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)

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

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

'Required!
wScript.Sleep 2000
</script></job>
</package>

2
সুপার ব্যবহারকারীকে স্বাগতম ! এটি অবশ্যই একটি জটিল স্ক্রিপ্ট। আপনি এটি ব্যাখ্যা করতে পারেন যে এটি কী করে এবং কীভাবে এটি ব্যবহার করবে?
jpaugh 23

1

কল্পনা করুন যে আপনি পাওয়ারশেল উইন্ডো খোলার ব্যতীত আপনি যে কমান্ড প্রম্পটে রয়েছেন একই ফোল্ডারটি সংকুচিত করতে চান:

powershell Compress-Archive . publish.zip

আমি যা করতে যাচ্ছিলাম তা ছিল না, তবে এটি এখন আমার পক্ষে কাজ করবে। এটি জানার একটি সহজ কৌশল।
bballdave025

0

আমি ডাব্লুএসকিডস উত্তর সম্পর্কিত কিছু পোস্ট করব কারণ দুঃখের সাথে আমি মন্তব্য ফাংশনটি ব্যবহার করতে পারি না।

ভিবিএসে কপিহির () পদ্ধতিটি ব্যবহার করা বেশ কয়েকটি সমস্যার পরিচয় দেয়। এর মধ্যে একটি বিষয় হ'ল পদ্ধতিটি অবিলম্বে ফিরে আসে যখন অনুলিপি প্রক্রিয়াটি পটভূমিতে শুরু হয় যেখানে একাধিক কপিরাইট () কলগুলি একে অপরকে হস্তক্ষেপ করবে এবং জিপটি সঠিকভাবে তৈরি হবে না। এটি ঠিক করতে এখানে একটি অপেক্ষা লুপ দরকার। আমার অপেক্ষা লুপটি এখানে পোস্ট করা অনুরূপ ইস্যুর উত্তরের ভিত্তিতে তৈরি ।

এখানে একটি আপডেট করা সংস্করণ যা পাইহেনট্যাগির দ্বারা রিপোর্ট করা "অবজেক্ট প্রয়োজনীয়" ত্রুটিটি ঠিক করে । এটি একটি সময়ের সমস্যা হ'ল দ্রুত মেশিনে স্ক্রিপ্টটি কার্যকর করা হলে নতুন তৈরি জিপ ফাইলটি আইটেম সংগ্রহের অন্তর্ভুক্ত।

set Args = WScript.Arguments
source = Args(0)
' remove trailing slashes as we add slashes when needed later
while Right(source, 1) = "\"
    source = Mid(source, 1, Len(source) - 1)
wend

target = Args(1)

' create empty ZIP file
set fso = CreateObject("Scripting.FileSystemObject")
set zip = fso.OpenTextFile(target, 2, vbtrue)
' write ZIP header, this ensures that Windows recognizes the file as "ZIP Folder"
zip.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
zip.Close
set zip = nothing
set fso = nothing

' copy files to ZIP file
set app = CreateObject("Shell.Application")

set sourceFolderObj = app.NameSpace(source)
set targetFolderObj = app.NameSpace(target)

for each item in sourceFolderObj.Items
  itemPath = source & "\" & item.Name

  copyItem = false

  ' ZIP file is included in Items collection and is recognized as folder, thus skip it to avoid script errors
  if itemPath <> target then
    if item.IsFolder then
      if item.GetFolder.Items().Count = 0 then
        ' folder is empty, skip it as empty folders can't be compressed
      else
        copyItem = true
      end if
    else
      copyItem = true
    end if
  end if

  if copyItem then
    targetFolderObj.CopyHere item

    ' wait until the file appears in the ZIP file, 
    ' this is needed because CopyHere() returns immediately after starting an asynchronous copy process 
    ' (starting multiple asynchronous copy will not work as it causes error messages, an invalid ZIP file, ...)
    while (targetFolderObj.ParseName(item.Name) is nothing)
      WScript.Sleep 1
    wend
  end If
next

set targetFolderObj = nothing
set sourceFolderObj = nothing
set app = nothing

0

সংক্ষিপ্তকরণ এবং সঙ্কোচনের জন্য অন্তর্নির্মিত ক্ষমতা উইন্ডোগুলির সংক্ষিপ্তসারের জন্য এখানে আমার প্রচেষ্টা - https://stackoverflow.com/questions/28043589/how-can-i-compres-zip-and-uncopress-unzip-files-and-folders -সঙ্গে-ব্যাচ-F

কয়েকটি প্রদত্ত সমাধান যা প্রায় প্রতিটি উইন্ডোজ মেশিনে কাজ করা উচিত।


দয়া করে আপনার উত্তরটি প্রসারিত করুন - এটি যে কোনও সময় মারা যেতে পারে এমন লিঙ্কের উপর অনেক বেশি নির্ভর করে।
স্টুডিওহ্যাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.