Powershell ব্যবহার করে বর্তমান ডিরেক্টরি নাম সহ প্রিফিক্স ফাইল


1

আমি ইমেজ (* .png এবং * .jpg) সঙ্গে ফোল্ডার আছে

>C:\Directory\Folder1
01.png
02.png
03.jpg
04.jpg
05.png

এবং আমি ক্ষমতাশালী ব্যবহার করে এই ধরনের সব ফাইল পুনঃনামকরণ করতে চাই:

>C:\Directory\Folder1
Folder1 - 01.png
Folder1 - 02.png
Folder1 - 03.jpg
Folder1 - 04.jpg
Folder1 - 05.png

তাই আমি এই সহজ লাইন দিয়ে এসেছি:

Get-ChildItem | Where-Object { $_.Extension -eq ".jpg" -or $_.Extension -eq ".png"} | rename-item -newname {$_.Directory.Name +" - " + $_.Name}

আমার যদি ফোল্ডারে 35 বা তার কম ফাইল থাকে, তবে আমার কাছে চেয়েছিলেন ফলাফল, কিন্তু যদি থাকে 36 বা তার বেশি ফাইল, আমি এই সঙ্গে শেষ হবে:

>C:\Directory\Folder1
Folder1 - Folder1 - Folder1 - 01.png
Folder1 - Folder1 - Folder1 - 02.png
Folder1 - Folder1 - Folder1 - 03.jpg
Folder1 - Folder1 - Folder1 - 04.jpg
Folder1 - Folder1 - Folder1 - 05.png

যখন ফাইলটির নাম 248 অক্ষর অতিক্রম করে তখন লুপ থামে।

কোন ধারণা কেন এটা looping হয়?

সম্পাদনা করুন: প্রস্তাবিত হিসাবে, ফোল্ডারটির নাম ইতিমধ্যে ফাইলের নামটিতে যোগ করা হয়েছে কিনা তা পরীক্ষা করার জন্য একটি সহজ সমাধান:

Get-ChildItem | Where-Object { $_.Extension -eq ".jpg" -or $_.Extension -eq ".png" -and !$_.Name.StartsWith($_.Directory.Name) } | rename-item -newname {$_.Directory.Name +" - " + $_.Name}

কিন্তু ফোল্ডারে 36 টিরও বেশি ফাইল থাকলে এটি লুপ করা কেন তা আমাকে বলে না।

উত্তর:


0

মনে হচ্ছে পুনঃনামটি লুপে একটি নতুন ফাইলের মতো মনে হচ্ছে এবং তাই এটি আবার প্রক্রিয়া করা হচ্ছে।

"ফোল্ডার 1" দিয়ে শুরু হওয়া কোনও ফাইলটি দেখার জন্য এটি কোথায় থামাতে হবে তার জন্য অতিরিক্ত পরীক্ষায় যোগ দেওয়ার চেষ্টা করুন।


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

আমি মনে করি, যদি আপনি গভীর খনন করতে চান, সম্ভবত এটি ডেটা আকারের কারণে হতে পারে। কিছু সময়ে, স্ক্রিপ্ট সম্ভবত একটি অভ্যন্তরীণ (সিস্টেম?) পরিবর্তনশীল আকার overflowing এবং ডিস্ক flushing হয়। সেই মুহুর্তে, আপনার লিখিত স্ক্রিপ্টটিতে "নতুন" এন্ট্রি রয়েছে যা স্ক্রিপ্ট যথাযথভাবে প্রক্রিয়া করে।
Julian Knight
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.