উইন্ডোজ ব্যাচ স্ক্রিপ্টে পরম পাথ পাওয়ার জন্য পরিবর্তনশীল V


9

আমার কাছে সমস্ত স্ক্রিপ্ট তালিকাভুক্ত করার জন্য আমার কাছে স্ক্রিপ্ট রয়েছে, এটি একটি .phtmlএক্সটেনশন থাকার কারণে ডিরেক্টরি থেকে পুনরাবৃত্তভাবে ।

@echo off
setlocal
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @relpath"') do echo %%G >> listoffiles.txt
endlocal
exit

এটি কেবলমাত্র ফাইলগুলির সাথে সম্পর্কিত পাথটি তালিকাভুক্ত করে। উপরের স্ক্রিপ্টটি একটি মধ্যবর্তী অবস্থান থেকে চলছে, সুতরাং আমি @relpathভেরিয়েবলের পুরো পথ পাচ্ছি না ।

এছাড়াও আমি ফলাফলের লাইনে উদ্ধৃতি পাচ্ছি, যা আমি মুছে ফেলতে চাই।

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

উত্তর:


3

পরিবর্তনশীলটিতে আমি পুরো পথ পাচ্ছি না @relpath

এছাড়াও আমি ফলাফলের লাইনে উদ্ধৃতি পাচ্ছি, যা আমি মুছে ফেলতে চাই।

নিম্নলিখিত ব্যাচ ফাইলটি যা চায় তা করে:

@echo off
setlocal enableDelayedExpansion
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @path"') do (
  set _name=%%G
  rem strip the quotes
  echo !_name:~1,-1! >> listoffiles.txt
  )
endlocal
exit

মন্তব্য:

  • ব্যবহার @path(ফাইল সম্পূর্ণ পথ) পরিবর্তে @relpath(ফাইল আপেক্ষিক পথ)।
  • substringউদ্ধৃতিগুলি অপসারণ করতে ভেরিয়েবল এক্সপ্রেশন ব্যবহার করে ( :~1,-1ভেরিয়েবলের স্ট্রিং থেকে প্রথম এবং শেষ অক্ষর সরিয়ে দেয়)।
  • লুপে setlocal EnableDelayedExpansionভেরিয়েবলগুলি সঠিকভাবে আপডেট হওয়া ব্যবহার করে Usesfor

আরও পড়া

  • উইন্ডোজ সিএমডি কমান্ড লাইনের একটি এজেড সূচক - উইন্ডোজ সেমিডি লাইন সম্পর্কিত সমস্ত কিছুর জন্য একটি দুর্দান্ত রেফারেন্স।
  • সক্রিয় ডিলেডিএক্সপ্লেশন - বিলম্বিত প্রসারণ পার্স সময় পরিবর্তে কার্যকরকরণের সময় ভেরিয়েবলগুলি প্রসারিত করতে পারে।
  • for / f - অন্য কমান্ডের ফলাফলের বিরুদ্ধে লুপ কমান্ড।
  • forfiles - একটি ফাইল নির্বাচন করুন (বা ফাইলের সেট) এবং প্রতিটি ফাইলে একটি কমান্ড কার্যকর করুন। ধির গতির কাজ.
  • ভেরিয়েবল - একটি ভেরিয়েবল (সাবস্ট্রিং) এর অংশ বের করুন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.