ব্যাচ ব্যবহার করে ফোল্ডারটি সন্ধান করুন


1

আমি এমন একটি স্ক্রিপ্ট তৈরি করার চেষ্টা করছি যা প্রচুর ফোল্ডার, নাম এবং সংখ্যা সহ একটি বড় লাইব্রেরিতে যেতে সহায়তা করে। অংশ সংখ্যাগুলি 4 টি অংশে বিভক্ত করা হয়েছে XXX.XX.XX.XXXX । অনুসন্ধানে লাইব্রেরির ফোল্ডারগুলি এইভাবে সেট করা হয়েছে: (উদাহরণস্বরূপ নাম) 100_Vegetal \ 01_ফ্লোয়ার \ 01_ রেড \ 0001_ রোজ

আমার ইস্যুটি ফোল্ডারগুলির নাম, যদি ফোল্ডারটিকে কেবল "100" বলা হত তবে এটি দিয়ে যাওয়া সহজ হবে। পার্ট নম্বরটি পৃথক করতে এবং ফোল্ডারটি খোলার চেষ্টা করার জন্য আমি এখানে কোডটি ব্যবহার করি।

set /p pnr="Please enter the PNR : " 
echo %pnr%
echo %pnr:~0,3% 
echo %pnr:~4,2%
echo %pnr:~7,2%
echo %pnr:~10,4%
explorer ".library\%pnr:~0,3%(*)"

আমি একটি ফোল্ডার খুলতে চাই যে অংশ নম্বরটির প্রথম 3 টি সংখ্যা রয়েছে। আপনি কি দয়া করে আমাকে এই সমস্যাটিতে সহায়তা করতে পারেন? আমি তারার সাথে চেষ্টা করেছিলাম কিন্তু এটি এক্সপ্লোরারটি খুলবে ...

ধন্যবাদ.


1
for /f "tokens=1-4 delims=." %%A in ("%pnr%") do Echo %%A,%%B,%%C,%%Dমেটা ভেরিয়েবল %% এ .. %% ডি
লটপিংস 26:36

এক্সপ্লোরার কোনও উত্তীর্ণ ডিরেক্টরি নামে ওয়াইল্ড কার্ডগুলি গ্রহণ করে না: আপনার মতো কিছু দরকার for /d %%d in (".library\%pnr:~0,3%*") do start /w explorer "%%d"
এএফএইচ

উত্তর:


1

প্রদত্ত পিএনআর থেকে প্রাপ্ত নম্বরগুলি ফোল্ডার ট্রিতে স্বতন্ত্র, নিম্নলিখিত ব্যাচটি ক্রমান্বয়ে পুনরাবৃত্তি করে সমস্ত 4 সংখ্যার সাথে মিলে ফোল্ডারটি সরাসরি খুলবে for /d loops


সাবধানতা অবলম্বন করুন , মেটা ভেরিয়েবলের জন্য উপরের / লোয়ার ক্ষেত্রে পার্থক্য করা হয়, সুতরাং পিএনআর বিভক্ত হয় %%A..%%Dএবং পাওয়া ফোল্ডারগুলি থাকে%%a..%%d

আমার রাম ড্রাইভের নমুনা গাছ একটি:

> tree
A:.
└───.library
    └───100_Vegetal
        └───01_Flower
            └───01_Red
                └───0001_Rose

:: Q:\Test\2018\10\26\SU_1370234.cmd
@Echo off 
set "Base=A:\.library"
set /p pnr="Please enter the PNR : " 
:: set pnr=100.01.01.0001
echo %pnr%

:: reset Level variables
for /l %%L in (1,1,4) do Set "Level%%L="

:: first split pnr, then dive into folders
for /f "tokens=1-4 delims=." %%A in ("%pnr%" ) Do (
  for /d %%a in ("%Base%\%%A*") Do (Set Level1=%%a
    for /d %%b in ("%%a\%%B*") Do  (Set Level2=%%b
      for /d %%c in ("%%b\%%C*") Do (Set Level3=%%c
        for /d %%d in ("%%c\%%D*") Do (Set Level4=%%d
          Explorer "%%d
        )
      )
    )
  )
)
:: set Level

নমুনা আউটপুট:

> Q:\Test\2018\10\26\SU_1370234.cmd
Please enter the PNR :
100.01.01.0001
Level1=A:\.library\100_Vegetal
Level2=A:\.library\100_Vegetal\01_Flower
Level3=A:\.library\100_Vegetal\01_Flower\01_Red
Level4=A:\.library\100_Vegetal\01_Flower\01_Red\0001_Rose

এক্সপ্লোরার এখানে খোলে A:\.library\100_Vegetal\01_Flower\01_Red\0001_Rose


আমি কীভাবে স্তরের পথটি "লুকিয়ে" রাখতে পারি?
Wyz

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

আপনি সেট স্তর মানে?
Wyz

হ্যাঁ, উপরে পরিবর্তিত হয়েছে।
লটপিংস ২

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

2

আপনি একটি / এফ লুপের পরামিতিগুলির সাথে ডায়ার কমান্ডটি ব্যবহার করতে পারেন এবং কেবল পুনরায় ডিরেক্টরিগুলির জন্য উত্স ফোল্ডারে এটি পুনরাবৃত্তভাবে তৈরি করতে পারেন এবং তারপরে এক্সপ্লোরারটিতে খোলার জন্য ওয়াইল্ডকার্ড ব্যবহার করে আপনি যে নম্বরগুলি টাইপ করেন সেগুলি দিয়ে সেই ফোল্ডারগুলিকে পুনরাবৃত্তি করতে পারে।/S /B /AD

স্ক্রিপ্ট উদাহরণ

set /p pnr="Please enter the PNR : " 
set pnr=%pnr:~0,3%
FOR /F "TOKENS=*" %%a IN ('DIR /S /B /AD ".library\%pnr%*"') DO explorer "%%~fa"

আরও সংস্থান

  • জন্য / এফ
  • FOR /?

        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    
  • dir
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.