এই ফোল্ডারটির উপ-ডিরেক্টরিতে আমি কীভাবে সমস্ত সংরক্ষণাগার সংগ্রহ করব?


18

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

উত্তর:


22

প্রথমত, 7-জিপ ইনস্টল করুন ।

batডিরেক্টরিটির মূলের ভিতরে একটি সংরক্ষণাগার সহ অনেকগুলি সাব-ডাইরেক্টরি সম্বলিত একটি ফাইল তৈরি করুন । তারপরে নিম্নলিখিতটি পেস্ট করুন:

FOR /D /r %%F in ("*") DO (
    pushd %CD%
    cd %%F
        FOR %%X in (*.rar *.zip) DO (
            "C:\Program Files\7-zip\7z.exe" x "%%X"
        )
    popd
)

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

কিভাবে কাজ করে?

("*") ডিও-তে (ডি * র) জন্য% ডি / র

বর্তমান ডিরেক্টরিতে সমস্ত ফোল্ডার লুপ করতে, এবং একটি চলক মধ্যে পাথ স্থাপন %%F

% সিডি% চাপানো

বর্তমান ডিরেক্টরিটি আমরা মেমরিতে রাখি।

সিডি %% চ

ভেরিয়েবল থেকে %%Fবর্তমান ডিরেক্টরি হিসাবে ফোল্ডারটি সেট করুন ।

FOR %%X in (*.rar *.zip) DO (

বর্তমান ফোল্ডারে থাকা সমস্ত ফাইল rarএবং zipফাইলগুলির জন্য, করুন:

"C:\Program Files\7-zip\7z.exe" x "%%X"

ফাইলগুলিতে 7-জিপ চালান। চারপাশে উদ্ধৃতি প্রয়োজন %%Xকারণ কিছু ফাইলের নামের মধ্যে ফাঁক রয়েছে।

popd

পূর্ববর্তী ডিরেক্টরিটিতে ফিরে আসুন যা আমরা স্মৃতিতে পূর্বে সঞ্চয় করেছিলাম।

আশা করি এটি কারও কাজে লাগবে।


3

উইন্ডোজ ভিস্তা থেকে স্ক্রিপ্টটি চালাতে আমার সমস্যা হয়েছিল। আমি কোড চালানো যখন কিছুই খুশি। স্ক্রিপ্টটি চালাতে সক্ষম হওয়ার জন্য আমার প্রশাসক হওয়া দরকার। যখন আমি ডাবল .bat ফাইলটিতে ক্লিক করেছি এবং "প্রশাসক হিসাবে চালাই" তখন এটি কাজ করে না কারণ এটি কোনও কারণে সিস্টেম 32 ফোল্ডারে শুরু হয়েছিল (যদি আমি সঠিকভাবে মনে করি)। এটির সমাধান করার জন্য উইন্ডোজ এনভায়রনমেন্ট ভেরিয়েবলটি (এখানে ব্যাখ্যা করা হয়েছে: উইন্ডোজ এনভায়রনমেন্ট ভেরিয়েবলস )% ~ dp0 ব্যবহার করে স্ক্রিপ্টটি যে ডিরেক্টরি থেকে চালিত হয়েছিল সেই ডিরেক্টরিতে ফিরে যেতে পারেন।

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
    FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files\7-zip\7z.exe" x %%X
    )
popd
)

নিশ্চিত করুন যে কোনও * .রার বা *। জিপ ফাইলগুলি স্ক্রিপ্টের মতো একই স্তরে নেই। এগুলি এক স্তর নীচে হওয়া উচিত।

আমি আশা করি এই মন্তব্যটি কাউকে সাহায্য করেছে।


এটি আমার পক্ষে ভাল কাজ করেছে। ": \ প্রোগ্রাম ফাইল (এক্স 86) সি" "সি: \ Program Files" & থেকে আমি 64-বিট উইন 7 চলমান করছি আমি পাথ পরিবর্তন করতে হয়েছিল
কন্ট্যাঙ্গো

1
find . -name "*.zip" |  while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

বর্তমান ডিরেক্টরিটিতে পুনরাবৃত্ত অনুসন্ধান শুরু করে, .zip এ শেষ হওয়া সমস্ত ফাইল সন্ধান করে, তারপরে লুপগুলিতে পাইপগুলি। এটি খুঁজে পাওয়া প্রতিটি ফাইলের জন্য, এটি ফাইলের ডিরেক্টরিতে আউটপুট বাদ দিয়ে ফাইলটিতে একটি আনজিপ কমান্ড চালায়।


1

উপরের উত্তরগুলি কাজ করে তবে আপনি যদি চালাচ্ছেন Windows 64-bitএবং 7-Zip 32-bitসঠিক পথটি C:\Program Files (x86)\7-Zip7-জিপের জন্য। স্ক্রিপ্টটি নীচে আমার পক্ষে কাজ করেছিল।

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
    FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files (x86)\7-zip\7z.exe" x %%X
    )
    popd
)

তবে আপনার কাছে 7zip এর -৪-বিট সংস্করণ থাকলে, সঠিক পাথটি হ'ল: মূল উত্তরে বর্ণিত হিসাবে "সি: \ প্রোগ্রাম ফাইলগুলি \ 7-জিপ \ 7z.exe"।
রোহান অ্যাডামস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.