ব্যাচের স্ক্রিপ্টের সাহায্যে ডিরেক্টরিতে প্রতিটি ফাইলকে কীভাবে করা যায়


265

ডিরেক্টরিতে .bat বা .Cmd ফাইলের সাহায্যে ডিরেক্টরিতে প্রতিটি ফাইলের মধ্যে কীভাবে পুনরাবৃত্তি করবেন?

সরলতার জন্য দয়া করে এমন একটি উত্তর সরবরাহ করুন যা কেবল ফাইলের নাম বা ফাইলের পথ প্রতিধ্বনিত করে।

উত্তর:


348

কমান্ড লাইন ব্যবহার:

for /f %f in ('dir /b c:\') do echo %f

ব্যাচের ফাইলের ব্যবহার:

for /f %%f in ('dir /b c:\') do echo %%f

আপডেট : ডিরেক্টরিতে যদি নামের সাথে জায়গাগুলি সহ ফাইল থাকে তবে আপনাকে for /fকমান্ডটি ব্যবহার করছে এমন ডিলিমেটার পরিবর্তন করতে হবে । উদাহরণস্বরূপ, আপনি পাইপ চর ব্যবহার করতে পারেন।

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f

আপডেট 2 : (মূল উত্তরের দেড় বছর পরে তাড়াতাড়ি :-)) ডিরেক্টরি ডিরেক্টরিতে নিজেই যদি নামের একটি স্থান থাকে তবে আপনি usebackqবিকল্পটি ব্যবহার করতে পারেন for:

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f

এবং যদি আপনাকে আউটপুট পুনর্নির্দেশকরণ বা কমান্ড পাইপিং ব্যবহার করতে হয় তবে এস্কেপ চর ব্যবহার করুন ( ^):

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f

3
কমপক্ষে কিছু কমান্ডের জন্য, ফাইল ভেরিয়েবলটি ডাবল উদ্ধৃতিতে আবদ্ধ হওয়া উচিত।
Jirka

1
কেন /fপ্রয়োজন পরে for? সহায়তা দস্তাবেজ অনুসারে /fপতাকাটি প্রতিটি ফাইল খোলে এবং পড়ে। ফাইলগুলির প্রতিধ্বনি বা নামকরণের জন্য এটি কি দরকার?
স্নেকস

17
/fপরে FORফাইলগুলিতে এটা নিষিদ্ধ। একইভাবে, /dডিরেক্টরিগুলি (ফোল্ডারগুলি) সীমাবদ্ধ করে এবং /rএটি পুনরাবৃত্ত হওয়ার নির্দেশ দেয়।

3
+1 এটি একটি জীবন্ত উত্তর, ক্রমাগত উপস্থিত ছিল; অনেক ধন্যবাদ.
সবুঙ্কু

4
ঠিক বুঝতে পেরেছিল যে আপনাকে পিছনে উদ্ধৃতি ব্যবহার করতে হবে ... পরিবর্তে 'dir /b "c:\program files"'এটি হওয়া উচিত`dir /b "c:\program files"`

101

বিকল্পভাবে, ব্যবহার করুন:

forfiles /s /m *.png /c "cmd /c echo @path"

ফোরফাইলস কমান্ডটি উইন্ডোজ ভিস্তা এবং আরও পাওয়া যায়।


1
২ য় সেমিডি শেলের ফাঁকা জায়গাগুলি সহ পাথ ব্যবহার করা কঠিন ছিল। কাজটি শেষ করতে শেষ পর্যন্ত আমি% PATH% env var এডজাস্ট করেছি। কিন্তু ধন্যবাদ. সহায়ক
টুবব

70

সবচেয়ে সহজ পদ্ধতি:

কমান্ড লাইন থেকে, ব্যবহার করুন:

for %f in (*.*) do echo %f

একটি ব্যাচ ফাইল থেকে (% শতাংশ চিহ্নগুলি দ্বিগুণ করুন):

for %%f in (*.*) do echo %%f

1 ম পরামিতি হিসাবে নির্দিষ্ট ফোল্ডার সহ একটি ব্যাচ ফাইল থেকে:

for %%f in (%1\*.*) do echo %%f

8
শুধু সহজ নয়, এর dir /Bসাথে আউটপুট মূল্যায়নের তুলনায় উল্লেখযোগ্যভাবে আরও মার্জিত for
syneticon-dj


35

ব্যবহার

for /r path %%var in (*.*) do some_command %%var

সঙ্গে:

  • পথ শুরুর পথ।
  • %% ভার কিছু শনাক্তকারী হচ্ছে।
  • *। * একজন ফাইলমাস্ক বা কোনও ভেরিয়েবলের সামগ্রী being
  • কিছু_ কম্যান্ডটি হ'ল কমান্ড হ'ল পথটি নির্বাহ করার জন্য এবং পরামিতি হিসাবে পৃথক করে দেওয়া।

2
আমি ত্রুটি পেয়েছি: %%var was unexpected at this time.আপনি একটি সঠিক উদাহরণ দিতে পারেন? আমি বৈচিত্র একটি গুচ্ছ চেষ্টাfor /r . %%var in (*.*) do echo %%var
hippietrail

3
কিছু অদ্ভুত কারণে, পরিবর্তনশীল নামটি একটি চরিত্রের মধ্যে সীমাবদ্ধ।
অলব

2
আমরা কি বিভিন্ন ফলাফলের জন্য বিভিন্ন স্মাইলি ব্যবহার করতে পারি?
সিলভার কোয়েটিয়ার

8

অন্য উপায়:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"

"~ nf" বলতে কী বোঝায়?
প্লেয়ার0

@ জুজড্রেড্ড "%~nf"বলতে ফাইলের নামটি এক্সটেনশন ছাড়াই বোঝায় যেখানে অংশে fনির্দিষ্ট করা ভেরিয়েবলের নাম রয়েছে for। দস্তাবেজ: ডকস.মাইক্রোসফট.এইন.ইউএস
প্রিভিয়ারস

-1

আমার কিছু ম্যালওয়ার ছিল যা ডিরেক্টরিতে সমস্ত ফাইলকে লুকানো / সিস্টেম / পঠনযোগ্য হিসাবে চিহ্নিত করে। অন্য কেউ যদি এই পরিস্থিতিতে নিজেকে খুঁজে পান তবে ডিরেক্টরিতে সিডি করুন এবং চালান for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f

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