আমি 7zip এ প্রতিটি নির্বাচিত ফাইল / ডিরেক্টরিতে পৃথক জিপ ফাইলগুলি কীভাবে তৈরি করব?


30

এটি টোটাল কমান্ডারের অভ্যন্তরীণ জিপ প্যাকার:

টোটাল কমান্ডার জিপ প্যাকার ডায়ালগ বক্সের একটি ছবি।

তবে আমি আমার 7 জিপ প্যাকারটি ব্যবহার করতে চাই। আমি যখন 5 টি ফাইল নির্বাচন করি তখন আমি প্রতিটি নির্বাচিত ফাইলের জন্য 5 টি পৃথক .zip সংরক্ষণাগার পাই। আমি 7zip এ কীভাবে করব?

উত্তর:


54

আমি নিশ্চিত না যে আপনি গ্রাফিকাল ইউজার ইন্টারফেসটি ব্যবহার করার পরামর্শ দিচ্ছেন তা করতে পারেন তবে আপনি অবশ্যই কমান্ড লাইন থেকে:

FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"

আপনাকে প্রথমে ডিরেক্টরিতে ( cdকমান্ড) ডিরেক্টরীতে পরিবর্তন F:\Downloadsকরতে হবে, বা যে ডিরেক্টরিটি আপনি ভর সংক্ষেপণ সম্পাদন করতে চান তা প্রয়োজন। এছাড়াও, * .exe বা কেবলমাত্র সেই দস্তাবেজগুলি সংকুচিত করতে আপনি যা ফিল্টার করতে চান তা বাড়িয়ে তোলা যথেষ্ট সহজ।

এবং গোপন ডিকোডার রিং:

  • %i একটি পরিবর্তনশীল যা লুপের প্রতিটি পদক্ষেপের জন্য ফাইলের নাম ধারণ করে
  • (*.*) নির্বাচন মানদণ্ড, এটি সহজেই *। এক্স বা অনুরূপ হতে পারে
  • 7z.exe 7-জিপের কমান্ড লাইন সংস্করণ
  • %~ni - এটি% i ভেরিয়েবলটি কেবলমাত্র ফাইলের নামে প্রসারিত করে - কোনও এক্সটেনশন নেই

যদি আপনি কোনও প্রদত্ত ডিরেক্টরিতে কেবল ফোল্ডার যুক্ত করতে চান, কেবলমাত্র ফাইলের সাথে কাজ করে কমান্ডটি ডিফল্ট হিসাবে কিছুটা জটিল। আমাদের এটিকে কিছু অতিরিক্ত তথ্য খাওয়াতে হবে:

FOR /F "usebackq delims=?" %i IN (`DIR /B /A:D`) DO 7z.exe a "%i.7z" "%i"

যাদু বলে মনে হচ্ছে এমন কয়েকটি অংশের কারণে এটি কাজ করে:

  • /F () এর প্রসারিত মানের উপর পুনরাবৃত্তি করতে বলে
  • usebackq এর জন্য বলে যে আমি একটি কমান্ড পাস করতে যাচ্ছি এবং পুনরুক্তির জন্য আউটপুটটি ব্যবহার করব
  • delims=??ফাইলের নাম এবং ডিরেক্টরিগুলির মধ্যে একটি অবৈধ চরিত্র - এর জন্য আমি টোকেনগুলি আলাদা করতে চাই তার জন্য বলে । আমি কেবল একটি টোকেন চাই
  • /Bমধ্যে DIRহয় খালি বিন্যাস - শুধু নাম
  • /A:Dমধ্যে DIRঅ্যাট্রিবিউট দ্বারা ফলাফল সীমাবদ্ধ জন্য, ডি ডিরেক্টরি জন্য

আপনি যদি এইটিকে কোনও ব্যাচের ফাইলের অভ্যন্তরে সজ্জিত করতে চান তবে আপনার কেবলমাত্র পরিবর্তনটি করতে হবে% i ভেরিয়েবলের দ্বিগুণ পালাতে:

FOR %%i IN (*.*) DO 7z.exe a "%%~ni.7z" "%%i"

হ্যাঁ, আপনার 7z সংরক্ষণাগারটি বাদে আমি একটি জিপ সংরক্ষণাগার চাই! এর পরিবর্তে% ~ ni.zip?
ক্রম্পী ওল 'বিয়ার

আরও ভাল, আমি আল্ট্রা সংকোচনের সাথে জিপ বা 7z চাই। এবং এটি ডি: ed প্যাক করে pack কিন্তু এখনও পর্যন্ত আপনার পদ্ধতি কাজ করে!
ক্রম্পী ওল 'বিয়ার

1
বুঝেছি। ধন্যবাদ! % I IN ( ) এর জন্য 7z.exe a "i: \ প্যাকড \% ~ ni.7z" "% i" -mx9
ওল 'বিয়ার

যাইহোক, আপনি কি আমাকে ব্যাচ ফাইলে এটি করবেন তা দেখাতে পারেন? অর্থাত্ স্প্রেট-আর্কাইভ.বাট
ক্রুদি ওল 'বিয়ার

ধন্যবাদ, এবং কীভাবে আমি এই স্ক্রিপ্টে পুরো ফোল্ডার যুক্ত করব, দয়া করে?
ক্রম্পী ওল 'বিয়ার

15

আমি গইউইক্সের উত্তরটি পছন্দ করি। তবে, যদি আপনি উইন্ডোজ 7 ব্যবহার করেন (বা পাওয়ার শেল ইনস্টলড আছে) এবং 7-জিপ, 7za.exe এর কমান্ড-লাইন সংস্করণও ব্যবহার করেন তবে আপনি এই আদেশটি চালাতে পারেন:

dir | ForEach-Object { & "7za.exe" a $_.BaseName $_.Name }

আপনি কেবল এক্সিকিউটেবল ফাইল নির্বাচন করতে "dir" কে "dir * .exe" এ পরিবর্তন করতে পারেন।

পাওয়ার শেল সম্পর্কে একটি দুর্দান্ত বিষয় হ'ল আপনি স্ট্রিংয়ের পরিবর্তে অবজেক্টের সাথে কাজ করছেন। আপনি চাইলে আপনি সত্যই সুনির্দিষ্ট হয়ে উঠতে পারেন। উদাহরণ স্বরূপ:

dir *.csv | ? { $_.Length -lt 18900 -and $_.LastWriteTime -ge [DateTime] "07/01/2011" } | ForEach-Object { & "7za.exe" a $_.BaseName $_.Name }

এর মধ্যে কেবল এমন ফাইল অন্তর্ভুক্ত থাকবে যা:

  1. একটি CSV এক্সটেনশন আছে
  2. আকারে 18,900 বাইটের চেয়ে কম
  3. সর্বশেষে 7/1/2011 বা তার পরে সংশোধিত হয়েছে

সম্পাদনা করুন আপনি যদি 7-জিপ ফাইলের পরিবর্তে জিপ ফাইলগুলি চান তবে পরিবর্তে ইনফিজিপের জিপ.এক্সই ব্যবহার করুন।


4
7-জিপ জিপ ফাইলগুলিও তৈরি করতে পারে - একবারের পতাকাটি দেখুন। উদাহরণ:7z a -tzip archive.zip *.exe
গায়িক্স

ঠিক আছে, $ _। বেসনাম $ _। নাম কাজ করে, তবে আমি কীভাবে করব $ _। বেসনাম $ _। অন্য ড্রাইভের নাম, অন্য ডিরেক্টরিতে? বলুন f: \ test \ file1.7z ইত্যাদি
ওল 'বিয়ার

0

আপনি http://www.ghisler.com/plugins.htm থেকে টোটাল কমান্ডারের জন্য 7zip প্লাগইনটি ডাউনলোড এবং ইনস্টল করতে পারেন আপনার স্ক্রিনশট থেকে উইন্ডোর ডানদিকে একবার করার পরে 7zip সংক্ষেপণের জন্য আরও একটি নির্বাচন হবে be সেই বিকল্পের সাহায্যে আপনি যা যা বলছেন ঠিক তা সম্পাদন করতে পারবেন।


0

আমি ঠিক এই সমস্যার জন্যই কাজ করছি এবং আমি যে সমস্যার সন্ধান পেয়েছি তা হ'ল আর্কাইভের মধ্যে ফোল্ডারের নাম নকল করা, অর্থাত্ "foo" নামে একটি ফোল্ডার সংকুচিত .\foo\fighters.txtকরার সময় কেবল একটি ধারণের পরিবর্তে একটি সংরক্ষণাগার তৈরি করা হয় fighters.txt

উত্তরটি হ'ল ডিরেক্টরিটি প্রক্রিয়াভুক্ত হচ্ছে এবং সংরক্ষণাগারটি পূর্ববর্তী (মূল) ডিরেক্টরিতে উপস্থিত হতে হবে, তারপরে পরবর্তী ফোল্ডারটি প্রক্রিয়া করার জন্য সেই ডিরেক্টরিতে ফিরে যেতে হবে।

সংরক্ষণাগারের মধ্যে শেষ না হওয়াতে 7 ডাব্লুআইপি-র বিদ্যমান জিপ এবং সিএমডি ফাইলগুলিকে অগ্রাহ্য করা উচিত নয়, সুতরাং -x!*.zipএবং -x!*.cmdবর্জনীয় যুক্তি।

এই স্ক্রিপ্টটি পুনরাবৃত্ত ফোল্ডার কাঠামোও বজায় রাখবে।

@echo off

REM Ensures variables set within the batch file are local to
REM this script only and will be removed when finished.
setlocal

if exist *.zip goto zip_exist

for /d %%X in (*) do (
    cls
    cd /D %%X
    "e:\Program Files\7-Zip\7z.exe" a -r  -x!*.zip -x!*.cmd "..\%%X.zip" "*.*"
    cd ..
)
goto end

:zip_exist
Echo.
Echo Note: for this script to work, compression of
Echo pre-existing zip files is not possible.

:end
pause

উপরের কোডটি একটি "ব্যাগ" ফাইল যেমন "compress_dirs.cmd" তে অনুলিপি করা উচিত এবং আপনার সংকোচন করতে চান এমন ফোল্ডারগুলি অন্তর্ভুক্ত ডিরেক্টরি থেকে অ্যাডমিন হিসাবে চালানো উচিত।

আশাকরি এটা সাহায্য করবে.


0

যদি আপনার ফোল্ডার কাঠামো রাখতে হয় এবং প্রতিটি ফাইলকে তার নিজস্ব কাঠামোয় সংরক্ষণ করতে হয় তবে এটি ব্যবহার করে দেখুন:

এক্সটেনশন .bat সহ একটি ফাইলে এই কমান্ডটি সংরক্ষণ করুন এবং আপনার জিপ করতে হবে এমন ফোল্ডারে এটি রাখুন:

FOR /R %%i IN (*.*) DO "C:\Program Files\7-Zip\7z.exe" a "%%i.7z" "%%i" -sdel

বিঃদ্রঃ:

-সডেল: মূল ফাইলটি মুছে ফেলে (alচ্ছিক, যদি আপনি কেবল সংক্ষেপিত ফাইল রাখতে চান)

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