এই নিয়মগুলি একটি ভিস্তার মেশিনে ব্যাপক পরীক্ষার পরে আবিষ্কার করা হয়েছিল। ফাইলের নামে ইউনিকোড নিয়ে কোনও পরীক্ষা করা হয়নি।
পুনরায় নামকরণের জন্য 2 টি প্যারামিটার প্রয়োজন - একটি উত্সমাস্ক, তার পরে টার্গেটমাস্ক হয়। সোর্সমাস্ক এবং টার্গেটমাস্ক উভয়ই *
/ এবং ?
ওয়াইল্ডকার্ড ধারণ করতে পারে । সোর্স এবং টার্গেট মাস্কের মধ্যে ওয়াইল্ডকার্ডের আচরণ কিছুটা বদলে যায়।
দ্রষ্টব্য - কোনও ফোল্ডারটির নাম পরিবর্তন করতে REN ব্যবহার করা যেতে পারে, তবে ফোল্ডারটির নাম পরিবর্তন করার সময় ওয়াইল্ডকার্ডগুলি সোর্সমাস্ক বা টার্গেটমাস্কে অনুমোদিত নয় । যদি সোর্সমাস্ক কমপক্ষে একটি ফাইলের সাথে মিলে যায় তবে ফাইল (গুলি) পুনরায় নামকরণ করা হবে এবং ফোল্ডারগুলি উপেক্ষা করা হবে। যদি সোর্সমাস্কটি কেবল ফোল্ডারগুলির সাথে মেলে তবে ফাইলগুলি নয়, তবে ওয়াইল্ডকার্ডগুলি উত্স বা লক্ষ্যবস্তুতে উপস্থিত হলে একটি সিনট্যাক্স ত্রুটি তৈরি হয়। যদি সোর্সমাস্ক কোনও কিছুর সাথে মেলে না, তবে "ফাইল পাওয়া যায়নি" ত্রুটির ফলাফল।
এছাড়াও, ফাইলগুলির নাম পরিবর্তন করার সময়, সোর্সমাস্কের ফাইল নাম অংশে ওয়াইল্ডকার্ডের অনুমতি দেওয়া হয়। ফাইলের নাম পর্যন্ত পথে ওয়াইল্ডকার্ডের অনুমতি নেই।
sourceMask
সোর্সমাস্ক কোন ফাইলের নাম পরিবর্তন করে তা নির্ধারণ করতে ফিল্টার হিসাবে কাজ করে। ওয়াইল্ডকার্ডগুলি এখানে অন্য কোনও কমান্ডের মতোই কাজ করে যা ফাইলের নাম ফিল্টার করে।
?
- এই ওয়াইল্ডকার্ড ব্যতীত অন্য কোনও 0 বা 1 টি চরিত্রের সাথে মেলে .
- এটি সর্বদা পরবর্তী অক্ষরটি গ্রাস করে যদি এটি না হয় .
তবে এটি নামের শেষে থাকলে বা পরবর্তী অক্ষরটি যদি কোনও ব্যর্থতার সাথে মিলবে না.
*
- (নীচে একটি ব্যতিক্রম সহ .
) সহ যে কোনও 0 বা ততোধিক অক্ষর মেলে । এই ওয়াইল্ডকার্ড লোভী নয়। এটি পরবর্তী অক্ষরগুলির সাথে মেলে সক্ষম করার জন্য যতটা প্রয়োজন সামান্য বা তত বেশি মিলবে।
সমস্ত অ-ওয়াইল্ডকার্ড অক্ষর অবশ্যই নিজের সাথে মেলে, কয়েকটি বিশেষ ক্ষেত্রে ব্যতিক্রম সহ।
.
- নিজের সাথে মেলে বা কোনও অক্ষর না থেকে থাকলে এটি নামের শেষের সাথে (কিছুই) মিলতে পারে। (দ্রষ্টব্য - একটি বৈধ উইন্ডোজ নাম দিয়ে শেষ করা যাবে না .
)
{space}
- নিজের সাথে মেলে বা কোনও অক্ষর না থেকে থাকলে এটি নামের শেষের সাথে (কিছুই) মিলতে পারে। (দ্রষ্টব্য - একটি বৈধ উইন্ডোজ নাম দিয়ে শেষ করা যাবে না {space}
)
*.
শেষে - সাথে মেলে এমন যেকোনো 0 বা তার বেশি অক্ষরের ছাড়া .
সসীম .
আসলে কোনো সমন্বয় হতে পারে .
এবং {space}
যতদিন মাস্ক খুব শেষ অক্ষর হিসাবে .
এই এক এবং একমাত্র ব্যতিক্রম কোথায় *
কেবল অক্ষরের যে কোনও সাথে মিলছে না।
উপরোক্ত নিয়মগুলি এত জটিল নয়। তবে আরও একটি গুরুত্বপূর্ণ নিয়ম রয়েছে যা পরিস্থিতিকে বিভ্রান্ত করে তোলে: সোর্সমাস্ক দীর্ঘ নাম এবং সংক্ষিপ্ত 8.3 নাম উভয়ের সাথে তুলনা করা হয়েছে (যদি তা বিদ্যমান থাকে)। এই শেষ নিয়মটি ফলাফলগুলি খুব জটিল করে তুলতে পারে, কারণ যখন মুখোশটি সংক্ষিপ্ত নামের সাথে মিল থাকে তখন এটি সর্বদা স্পষ্ট হয় না।
এনটিএফএস ভলিউমে সংক্ষিপ্ত 8.3 নাম তৈরি করা নিষ্ক্রিয় করতে RegEdit ব্যবহার করা সম্ভব, যেখানে ফাইল মাস্কের ফলাফলের ব্যাখ্যাটি আরও সোজা হয়ে যায়। সংক্ষিপ্ত নামগুলি অক্ষম করার আগে তৈরি হওয়া যে কোনও সংক্ষিপ্ত নামগুলি রয়ে যাবে।
targetMask
দ্রষ্টব্য - আমি কোনও কঠোর পরীক্ষা করিনি, তবে দেখা যাচ্ছে যে এই একই নিয়মগুলি COPY কমন্ডের টার্গেট নামের জন্যও কাজ করে
টার্গেটম্যাস্ক নতুন নাম নির্দিষ্ট করে। এটি সর্বদা পুরো দীর্ঘ নামে প্রয়োগ করা হয়; উত্সমাস্ক সংক্ষিপ্ত 8.3 নামের সাথে মিলে গেলেও টার্গেটমাস্কটি সংক্ষিপ্ত 8.3 নামের ক্ষেত্রে কখনই প্রয়োগ করা হয় না।
সোর্সমাস্কে ওয়াইল্ডকার্ডের উপস্থিতি বা অনুপস্থিতি টার্গেটমাস্কে ওয়াইল্ডকার্ডগুলি কীভাবে প্রক্রিয়া করা হয় তাতে কোনও প্রভাব নেই।
নিম্নলিখিত আলোচনায় - c
কোনো চরিত্র উপস্থাপন করে এমন নয় *
, ?
অথবা.
টার্গেটমাস্কটি কোনও ব্যাক-ট্র্যাকিং ছাড়াই উত্স নামের বিরুদ্ধে কঠোরভাবে বাম থেকে ডানে প্রক্রিয়া করা হয়।
c
- পরবর্তী অক্ষরটি না থাকলে .
এবং c
টার্গেট নামের সাথে যুক্ত হওয়া পর্যন্ত উত্স নামের মধ্যে অবস্থানটি অগ্রসর করে । (যে চরিত্রটি উত্সে ছিল c
তা প্রতিস্থাপন করে তবে কখনও প্রতিস্থাপন করে না .
)
?
- উত্স দীর্ঘ নাম থেকে পরবর্তী অক্ষরটির সাথে মেলে এবং পরবর্তী অক্ষরটি যতক্ষণ না পরবর্তী অক্ষরটি এটি নামের নামের সাথে সংযুক্ত করে .
যদি পরবর্তী অক্ষরটি হয় .
বা উত্স নামের শেষে থাকে তবে ফলাফল এবং বর্তমানের সাথে কোনও অক্ষর যুক্ত হয় না উত্স নামের মধ্যে অবস্থান অপরিবর্তিত।
*
টার্গেটমাস্কের শেষে - উত্স থেকে লক্ষ্য পর্যন্ত সমস্ত অক্ষর যুক্ত করে। যদি ইতিমধ্যে উত্স শেষে, তারপর কিছুই না।
*c
- বর্তমান অবস্থান থেকে সমস্ত উত্স অক্ষরের c
সাথে মিলিত হয় (কেস সেনসিটিভ লোভী ম্যাচ) এর শেষ সংঘর্ষের মধ্য দিয়ে এবং লক্ষ্য নামের সাথে অক্ষরের মিলের সেট সংযোজন করে। যদি c
খুঁজে পাওয়া যায় না, তবে উত্স থেকে সমস্ত অক্ষর যুক্ত করা হবে, তারপরে c
এটিই আমি একমাত্র পরিস্থিতি সম্পর্কে জানলাম যেখানে উইন্ডোজ ফাইলের প্যাটার্নের মিলটি কেস সংবেদনশীল।
*.
- বর্তমান অবস্থান থেকে সমস্ত উত্স অক্ষরের সাথে মিলিত করে (লোভী ম্যাচ) এর শেষ সংঘর্ষের মধ্য দিয়ে .
এবং লক্ষ্য নামের সাথে অক্ষরের মিলের সেট সংযোজন করে। যদি .
খুঁজে পাওয়া যায় না, তবে উত্স থেকে সমস্ত অক্ষর যুক্ত করা হবে, তারপরে অনুসরণ করা হবে.
*?
- উত্স থেকে লক্ষ্য পর্যন্ত সমস্ত অক্ষর যুক্ত করে। যদি ইতিমধ্যে উত্স শেষে হয় তবে কিছুই করে না।
.
ছাড়া *
ফ্রন্ট - মাধ্যমে উৎস অবস্থান ক্ষেত্রে ঋণ প্রথম এর occurance .
যে কোন অক্ষর অনুলিপি ছাড়া আর appends .
লক্ষ্য নাম। যদি .
উত্সটি খুঁজে পাওয়া যায় না, তবে উত্সের শেষ দিকে অগ্রসর হয় এবং .
লক্ষ্য নামের সাথে যুক্ত হয়।
টার্গেটম্যাস্ক শেষ হয়ে যাওয়ার পরে, কোনও পিছনে .
এবং {space}
ফলাফলের টার্গেটের নামের শেষে ছাঁটাই করা হয় কারণ উইন্ডোজ ফাইলের নামগুলি .
বা এর সাথে শেষ হতে পারে না{space}
কিছু ব্যবহারিক উদাহরণ
যে কোনও এক্সটেনশনের আগে 1 ম এবং 3 য় পজিশনে একটি অক্ষর প্রতিস্থাপন করুন (এটি এখনও উপস্থিত না থাকলে 2 য় বা 3 য় অক্ষর যুক্ত করুন)
ren * A?Z*
1 -> AZ
12 -> A2Z
1.txt -> AZ.txt
12.txt -> A2Z.txt
123 -> A2Z
123.txt -> A2Z.txt
1234 -> A2Z4
1234.txt -> A2Z4.txt
প্রতিটি ফাইলের (চূড়ান্ত) এক্সটেনশন পরিবর্তন করুন
ren * *.txt
a -> a.txt
b.dat -> b.txt
c.x.y -> c.x.txt
প্রতিটি ফাইলে একটি এক্সটেনশন যুক্ত করুন
ren * *?.bak
a -> a.bak
b.dat -> b.dat.bak
c.x.y -> c.x.y.bak
প্রাথমিক এক্সটেনশনের পরে কোনও অতিরিক্ত এক্সটেনশন সরান। নোট করুন যে ?
পুরো বিদ্যমান নাম এবং প্রাথমিক এক্সটেনশন সংরক্ষণের জন্য পর্যাপ্ত ব্যবহার করতে হবে।
ren * ?????.?????
a -> a
a.b -> a.b
a.b.c -> a.b
part1.part2.part3 -> part1.part2
123456.123456.123456 -> 12345.12345 (note truncated name and extension because not enough `?` were used)
উপরের মতো একই, তবে প্রাথমিক নাম এবং / অথবা 5 টি অক্ষরের চেয়ে বেশি এক্সটেনশানযুক্ত ফাইলগুলি ফিল্টার করুন যাতে সেগুলি কেটে না যায়। (স্পষ্টতই ?
ছয় অক্ষরের দীর্ঘ পর্যন্ত নাম এবং এক্সটেনশনগুলি সংরক্ষণ করতে টার্গেটম্যাস্কের উভয় প্রান্তে একটি অতিরিক্ত যোগ করতে পারে )
ren ?????.?????.* ?????.?????
a -> a
a.b -> a.b
a.b.c -> a.b
part1.part2.part3 -> part1.part2
123456.123456.123456 (Not renamed because doesn't match sourceMask)
_
নামের শেষে অক্ষর পরিবর্তন করুন এবং এক্সটেনশন সংরক্ষণের চেষ্টা করুন। ( _
এক্সটেনশনে উপস্থিত হলে সঠিকভাবে কাজ করে না )
ren *_* *_NEW.*
abcd_12345.txt -> abcd_NEW.txt
abc_newt_1.dat -> abc_newt_NEW.dat
abcdef.jpg (Not renamed because doesn't match sourceMask)
abcd_123.a_b -> abcd_123.a_NEW (not desired, but no simple RENAME form will work in this case)
.
অক্ষর দ্বারা সীমিত যে কোনও নামই ভাঙতে পারে কেবল প্রতিটি উপাদানটির শেষে থেকে যুক্ত বা মুছতে পারে। ওয়াইল্ডকার্ডের সাহায্যে বাকী অংশ সংরক্ষণ করার সময় অক্ষরের শুরু বা মাঝখানে অক্ষর মুছতে বা যোগ করা যায় না। বিকল্প কোথাও অনুমোদিত হয়।
ren ??????.??????.?????? ?x.????999.*rForTheCourse
part1.part2 -> px.part999.rForTheCourse
part1.part2.part3 -> px.part999.parForTheCourse
part1.part2.part3.part4 (Not renamed because doesn't match sourceMask)
a.b.c -> ax.b999.crForTheCourse
a.b.CarPart3BEER -> ax.b999.CarParForTheCourse
যদি সংক্ষিপ্ত নামগুলি সক্ষম করা থাকে, তবে ?
নামের জন্য কমপক্ষে 8 এবং ?
এক্সটেনশনের জন্য কমপক্ষে 3 সহ একটি সোর্সমাস্ক সমস্ত ফাইলের সাথে মিলবে কারণ এটি সর্বদা সংক্ষিপ্ত 8.3 নামের সাথে মেলে।
ren ????????.??? ?x.????999.*rForTheCourse
part1.part2.part3.part4 -> px.part999.part3.parForTheCourse
দরকারী কৌতুক / বাগ? নাম উপসর্গ মুছে ফেলার জন্য
এই সুপার ইউজার পোস্টটি বর্ণনা করে যে কীভাবে /
কোনও ফাইলের নাম থেকে শীর্ষস্থানীয় অক্ষরগুলি মুছতে ফরোয়ার্ড স্ল্যাশগুলির সেট ( ) ব্যবহার করা যেতে পারে। প্রতিটি অক্ষর মুছে ফেলার জন্য একটি স্ল্যাশ প্রয়োজন। আমি একটি উইন্ডোজ 10 মেশিনে আচরণটি নিশ্চিত করেছি।
ren "abc-*.txt" "////*.txt"
abc-123.txt --> 123.txt
abc-HelloWorld.txt --> HelloWorld.txt
এই কৌশলটি কেবল তখনই কাজ করে যদি উত্স এবং টার্গেট মাস্ক উভয়ই ডাবল উদ্ধৃতিতে আবদ্ধ থাকে। প্রয়োজনীয় উদ্ধৃতি ব্যতীত নিম্নলিখিত সমস্ত ফর্মগুলি এই ত্রুটির সাথে ব্যর্থ হয়:The syntax of the command is incorrect
REM - All of these forms fail with a syntax error.
ren abc-*.txt "////*.txt"
ren "abc-*.txt" ////*.txt
ren abc-*.txt ////*.txt
/
মধ্যম অথবা একটি ফাইল নামের শেষ যে কোন অক্ষর মুছে ফেলার জন্য ব্যবহার করা যাবে না। এটি কেবল শীর্ষস্থানীয় (উপসর্গ) অক্ষরগুলি সরাতে পারে।
প্রযুক্তিগতভাবে /
ওয়াইল্ডকার্ড হিসাবে কাজ করছে না। বরং এটি একটি সরল চরিত্রের প্রতিস্থাপন করছে, তবে তারপরে প্রতিস্থাপনের পরে, আরএন কমান্ডটি /
কোনও ফাইলের নামে বৈধ নয় তা সনাক্ত করে এবং /
নামটি থেকে শীর্ষস্থানীয় স্ল্যাশগুলি কেড়ে নেয়। REN যদি /
একটি লক্ষ্য নামের মাঝখানে সনাক্ত করে তবে একটি সিনট্যাক্স ত্রুটি দেয় ।
সম্ভাব্য পুনরায় নাম বাগ - একটি একক কমান্ড একই ফাইলটির পুনরায় নাম পরিবর্তন করতে পারে!
একটি খালি পরীক্ষা ফোল্ডারে শুরু হচ্ছে:
C:\test>copy nul 123456789.123
1 file(s) copied.
C:\test>dir /x
Volume in drive C is OS
Volume Serial Number is EE2C-5A11
Directory of C:\test
09/15/2012 07:42 PM <DIR> .
09/15/2012 07:42 PM <DIR> ..
09/15/2012 07:42 PM 0 123456~1.123 123456789.123
1 File(s) 0 bytes
2 Dir(s) 327,237,562,368 bytes free
C:\test>ren *1* 2*3.?x
C:\test>dir /x
Volume in drive C is OS
Volume Serial Number is EE2C-5A11
Directory of C:\test
09/15/2012 07:42 PM <DIR> .
09/15/2012 07:42 PM <DIR> ..
09/15/2012 07:42 PM 0 223456~1.XX 223456789.123.xx
1 File(s) 0 bytes
2 Dir(s) 327,237,562,368 bytes free
REM Expected result = 223456789.123.x
আমি বিশ্বাস করি উত্সমাস্কটি *1*
দীর্ঘ ফাইলের নামের সাথে প্রথমে মেলে এবং ফাইলটির প্রত্যাশিত ফলাফলটির নাম পরিবর্তন করা হয়েছে 223456789.123.x
। পুনরায় নামকরণ প্রক্রিয়া করার জন্য আরও ফাইলগুলির সন্ধান করতে থাকে এবং এর নতুন সংক্ষিপ্ত নামের মাধ্যমে নতুন নামকৃত ফাইলটি সন্ধান করে 223456~1.X
। এরপরে ফাইলটির পুনরায় নামকরণ করা হয় এর চূড়ান্ত ফলাফল 223456789.123.xx
।
যদি আমি 8.3 নাম প্রজন্মটি অক্ষম করে রাখি তবে RENAME প্রত্যাশিত ফলাফল দেয়।
এই বিজোড় আচরণকে প্ররোচিত করার জন্য আমি অবশ্যই সমস্ত ট্রিগার অবস্থার সম্পূর্ণ কাজ করিনি। আমি উদ্বিগ্ন ছিলাম যে কখনই শেষ না হওয়া পুনরাবৃত্তি হওয়া RENAME তৈরি করা সম্ভব হতে পারে তবে আমি কখনই এটিকে প্ররোচিত করতে সক্ষম হইনি।
আমি বিশ্বাস করি বাগটি প্ররোচিত করার জন্য নিম্নলিখিত সমস্ত কিছু অবশ্যই সত্য be প্রতিটি বুগড কেস আমি দেখেছি নিম্নলিখিত শর্ত ছিল, কিন্তু নিম্নলিখিত শর্তাবলী পূরণ করে যে সমস্ত ক্ষেত্রে bugged ছিল না।
- সংক্ষিপ্ত 8.3 নাম অবশ্যই সক্ষম করতে হবে
- সোর্সমাস্ক অবশ্যই মূল দীর্ঘ নামের সাথে মেলে।
- প্রাথমিক নামটিতে অবশ্যই একটি সংক্ষিপ্ত নাম তৈরি করতে হবে যা উত্সমাস্কের সাথেও মেলে
- প্রাথমিক নাম পরিবর্তন করা ছোট নামটির মূল সংক্ষিপ্ত নামের পরে বাছাই করতে হবে (যদি তা বিদ্যমান থাকে?)