প্রতিটি ফাইলের জন্য ফোল্ডার তৈরি করতে এবং ফাইলটিকে ফোল্ডারে সরানোর জন্য সিএমডি কমান্ড


10

আমার একটি কমান্ডের দরকার যা একটি ডিরেক্টরিতে প্রতিটি ফাইলের জন্য (ফাইল-নামের উপর ভিত্তি করে) ফোল্ডার তৈরি করতে কমান্ড লাইন থেকে চালানো যায় এবং তারপরে ফাইলটি সদ্য নির্মিত ফোল্ডারে স্থানান্তরিত করে।

উদাহরণ:

ফোল্ডার শুরু হচ্ছে:

Dog.jpg
Cat.jpg

নিম্নলিখিত কার্যনির্বাহী ডিরেক্টরিতে প্রতিটি ফাইলের নামের জন্য একটি ফোল্ডার তৈরি করতে নিম্নলিখিত কমান্ডটি দুর্দান্ত কাজ করে।

for %i in (*) do md "%~ni"

ফলাফল ফোল্ডার:

\Dog\
\Cat\
Dog.jpg
Cat.jpg

আমার এটি আরও একধাপ এগিয়ে নিয়ে ফোল্ডারে ফাইলটি সরানো দরকার।

আমি যা অর্জন করতে চাই তা হ'ল:

\Dog\Dog.jpg
\Cat\Cat.jpg

এই সমস্ত কিছু করার জন্য কেউ আমাকে একটি আদেশ দিয়ে সহায়তা করতে পারে?

উত্তর:


10

দ্বিতীয় আদেশ হবে

for %i in (*) do move "%i" "%~ni"

সম্পাদনা: and31415 এর মন্তব্যের ভিত্তিতে% i এর জন্য "" যুক্ত হয়েছে। tnx।


4
এ থেকে অনুসরণ করে আমি বলব যে ক) তাদের একত্রিত করতে পারে - for %i in (*) do cmda && cmdb বি) প্রথম প্রতিধ্বনি করতে for %i in (*) do @ECHO cmda && cmdb পারে) যোগ করতে পারে আমি মনে করি এটি সাবডিয়ারগুলির মধ্য দিয়ে যেতে একটি / আর।
বার্লপ

2
ফাইলের নাম ফাঁক থাকা অবস্থায় এই কমান্ডটি কাজ করবে না। আপনার এর মতো কিছু ব্যবহার করা উচিত: for %i in (*) do move "%~i" "%~ni"এমনকি এটি যথেষ্ট ভাল নাও হতে পারে, কারণ লক্ষ্য ফোল্ডারটি উপস্থিত না থাকায় এর পার্শ্ব প্রতিক্রিয়া হতে পারে (যেমন ফাইলগুলি নিজের উপর "সরানো" হয়, সুতরাং নাম পরিবর্তন করা হয়)। একটি সহজ সমাধান হ'ল এইভাবে দুটি কমান্ড একত্রিত করা: for %i in (*) do md "%~ni" && move "%~i" "%~ni"কমান্ডটি ধরে নিয়েছে যে ডিরেক্টরিগুলি ইতিমধ্যে বিদ্যমান নেই।
31415

2
এছাড়াও, বার্লপের মন্তব্যটি প্রসারিত করতে, আপনি যখন ব্যবহার করবেন cmda && cmdbতখনই সফল cmdbহলে কার্যকর করা হবে cmda। আপনি যদি cmda & cmdbপরিবর্তে ব্যবহার করতে চান, তবে দ্বিতীয় কমান্ড নির্বিশেষে কার্যকর করা হবে। প্রকৃতপক্ষে, একটি একক অ্যাম্পারস্যান্ড ( &) কেবল একটি কমান্ড বিভাজক এবং ডাবল এম্পারস্যান্ড ( &&) একটি শর্তসাপেক্ষ । যে আদেশগুলি কোনও errorlevelমান নির্ধারণ করে না সেগুলি পরবর্তীকালের সাথে ব্যবহার করা উচিত নয়।
31415

5

কেবল সিরিজে এই আদেশগুলি কার্যকর করুন:

প্রতিটি ফাইলের জন্য ফোল্ডার তৈরি করার জন্য:

for %i in (*) do mkdir "%~ni"

প্রতিটি ফাইলকে তার ফোল্ডারে সরানোর জন্য:

for %i in (*) do move "%i" "%~ni"

1
সুপার ব্যবহারকারীকে স্বাগতম! এটি অন্য উত্তরটির সদৃশ এবং কোনও নতুন সামগ্রী যুক্ত করে না। আপনার অবদানের জন্য নতুন কিছু না থাকলে দয়া করে কোনও উত্তর পোস্ট করবেন না।
ডেভিডপস্টিল

-1

আপনার কিছু ফোল্ডার যেমন: বছর বছর \ ফাইলের নাম.এমপি 4 থাকলে এটি এটি করবে

1901\Filename.mp4 
1902\Filename.mp4
1903\Filename.mp4

এটি সমস্ত ফোল্ডার 1 ম স্তরের ফাইলগুলি তালিকাভুক্ত করবে; সমস্ত * .mp4 এবং * .mkv ফাইলের নামের সাথে 2 স্তরের ফোল্ডার তৈরি করবে এবং 1 ম স্তরের ফোল্ডারে একই নামের সমস্ত ফাইলগুলিকে দ্বিতীয় স্তরের ফোল্ডারে স্থানান্তরিত করবে, এটি বছর বছরের বেস ফোল্ডারে চালাবে।

for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"

আপনার যদি প্রথম স্তরের YEARS ফোল্ডার না থাকে তবে আপনি কেবল প্রথম বাইপাস করতে পারেন এবং ২ য় ধাপ চালাতে পারেন, এটি ফাইলের নাম বেস ফোল্ডারে চালাতে পারেন।

for %i in (*.mp4,*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"

&& নিশ্চিত করবে যে পূর্ববর্তী এমকেডির% ERRORLEVEL% ফাইলের চালনা চালানোর জন্য 0

পরীক্ষা করতে, এটি ব্যবহার করুন:

for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do echo "%~dpi%~ni" && echo "%~dpi%~ni.*" "%~dpi%~ni\"

বাম ফাইলগুলি সন্ধান করুন: /%% ডি-এর জন্য (*)% i-তে (% do fD \ *) করুন "% ~ dpi% ~ ফাই" প্রতিধ্বনি করুন
ওলিয়েভিও মৌরা

/ ডি% ডি এর জন্য (*)% আই ইন (% ~ এফডি \ *) ""% ~ ফাই "" ডি: \ ট্র্যাশ move "সরান
ওলভিভিও মৌরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.