উত্তর:
আমি সবচেয়ে সহজ উপায়টি মনে করতে পারি এটি একটি ছোট পাওয়ারশেল স্ক্রিপ্ট সহ । আপনি যদি উইন্ডোজ 7 চালাচ্ছেন তবে আপনার এটি ইতিমধ্যে ইনস্টল করা উচিত, যদি ডাউনলোড না করে ইনস্টল করার জন্য মাইক্রোসফট.কম এ যান না। লিঙ্কটি একটি বিশদ বিবরণ সরবরাহ করে তবে অপারেশনটির জাস্টটি আপনার সুবিধার জন্য এখানে অন্তর্ভুক্ত করা হয়েছে।
পাওয়ারশেলটি খুলুন এবং এটি প্রবেশ করুন:
(gci C:\Scripts -r | ? {$_.PSIsContainer -eq $True}) | ? {$_.GetFiles().Count -eq 0} | select FullName
সি পরিবর্তন করুন: through আপনি যেটি সন্ধান করতে চান তাতে স্ক্রিপ্টগুলি, আপনি এমনকি এটি কেবল সিটিতে সেট করতে পারেন \ আপনি যদি এটি পুরো ড্রাইভটি পরীক্ষা করতে চান তবে।
এটি আপনাকে এরূপ আউটপুট দেবে (নোটগুলি সি: the স্ক্রিপ্টগুলির নীচে খালি ডিরেক্টরিগুলি মনে রাখবেন)।
পুরো নাম ------- সি: \ স্ক্রিপ্ট \ খালি সি: \ স্ক্রিপ্টস ty খালি ফোল্ডার 2 সি: \ স্ক্রিপ্টস \ খালি \ খালি সাবফোল্ডার সি: \ স্ক্রিপ্টস \ নতুন ফোল্ডার ty খালি সাবফোল্ডার তিন স্তরের গভীর
আপনি যদি পাওয়ারশেলের দিকে কিছুটা সন্ধান করেন তবে আমি নিশ্চিত যে আপনি কীভাবে খালি ফোল্ডারগুলি স্বয়ংক্রিয়ভাবে মুছতে পারবেন তা নির্ধারণ করতে সক্ষম হবেন (যদিও আমি কেবল এর ক্ষেত্রে এর বিরুদ্ধে প্রস্তাব দিই just)
সম্পাদনা করুন : রিচার্ড মন্তব্যে যেমন উল্লেখ করেছেন, সত্যিকারের খালি ডিরেক্টরি ব্যবহারের জন্য:
(gci C:\Scripts -r | ? {$_.PSIsContainer -eq $True}) | ?{$_.GetFileSystemInfos().Count -eq 0} | select FullName
?{$_.GetFileSystemInfos().Count -eq 0}
।
কোডটি একটি একক লাইন দিয়ে এটি অর্জনের সবচেয়ে সহজ উপায় নীচে way এটি বর্তমান অবস্থানে খালি ডিরেক্টরিগুলি তালিকাভুক্ত করে। পুনরাবৃত্তি প্রয়োজন হলে পরামিতিগুলিতে -Recurse
কলটিতে যুক্ত করা যেতে পারে Get-ChildItem
।
Get-ChildItem -Directory | Where-Object { $_.GetFileSystemInfos().Count -eq 0 }
এলিয়াস সহ সংক্ষিপ্ত সংস্করণ:
dir -Directory | ? {$_.GetFileSystemInfos().Count -eq 0 }
বা, প্যারামিটারাইজড পাওয়ারশেল ফাংশন হিসাবে (আমি এটি আমার পাওয়ারশেল স্টার্টআপ প্রোফাইলে যুক্ত করেছি):
Function Get-EmptyDirectories($basedir) {
Get-ChildItem -Directory $basedir | Where-Object { $_.GetFileSystemInfos().Count -eq 0 }
}
এরপরে এটি পাইপিং সহ অন্য কোনও পাওয়ারশেল ফাংশন হিসাবে আহ্বান করা যেতে পারে। উদাহরণস্বরূপ, এই কলটি সিস্টেম অস্থায়ী ডিরেক্টরিতে সমস্ত খালি ডিরেক্টরি মুছে ফেলবে:
Get-EmptyDirectories $env:TMP | del
এটা চেষ্টা কর
Get-ChildItem C:\Scripts -Recurse -Directory | Where-Object {!$_.GetFileSystemInfos().Count}
গণনা 0 নয়, এটি মোটেও বিদ্যমান নয় যে ডিরেক্টরিটি সম্পূর্ণ ফাঁকা বা অন্য সম্পূর্ণ খালি ফোল্ডার ধারণ করে
ধন্যবাদ, আমি এটি আমার স্ক্রিপ্টের ভিত্তি হিসাবে ব্যবহার করেছি। আমি খালি ফোল্ডারগুলি মুছতে চেয়েছিলাম কিন্তু চেষ্টা করার Where-Object {$_.GetFiles().Count -eq 0}
ফলে খালি নয় এমন সাব-ডিরেক্টরি থাকা ফোল্ডারগুলি মুছতে পারে । কোনও ফোল্ডার বা ফোল্ডার নেই এমন ফোল্ডারটি সরিয়ে ফেলার জন্য আমি ডু হুইল লুপটি ব্যবহার করে শেষ করেছিলাম আবার ফিরে লুপ করব এবং গাছের শেষের দিকে পৌঁছা না হওয়া পর্যন্ত আবার চেক করব।
$Datefn=Get-Date -format M.d.yyyy_HH.mm.ss
#Set The File Name for the log file
$DelFileName = $Datefn
#Set The File Ext for the log file
$DelFileExt = " - Old Files" + ".log"
#Set The File Name With Ext for the log file
$DelFileName = $DelFileName + $DelFileExt
#Set Log Path
$LogPath = [Environment]::GetFolderPath("Desktop")
$Path = 'Q:\'
$NumDays = 365
Get-ChildItem -Path $Path -Exclude DCID.txt,*.exe -Recurse | Where-Object {$_.lastwritetime -lt`
(Get-Date).addDays(-$NumDays) -and $_.psiscontainer -eq $false} |
ForEach-Object {
$properties = @{`
Path = $_.Directory`
Name = $_.Name
DateModified = $_.LastWriteTime
Size = $_.Length / 1GB }
New-Object PSObject -Property $properties | select Path,Name,DateModified, Size
} |
Out-File "$LogPath\$DelFileName"
<#
#Removes the files found
Get-ChildItem -Path $Path -Exclude DCID.txt,*.exe -Recurse | Where-Object {$_.lastwritetime -lt`
(Get-Date).addDays(-365) -and $_.psiscontainer -eq $false} | Remove-Item -Recurse -Force
#Removes empty folders
DO {
$a = (Get-ChildItem $Path -Recurse | Where-Object {$_.PSIsContainer -eq $true}) | Where-Object`
{$_.GetFileSystemInfos().Count -eq 0} | Select-Object Fullname
$a
(Get-ChildItem $Path -Recurse | Where-Object {$_.PSIsContainer -eq $true}) | Where-Object`
{$_.GetFileSystemInfos().Count -eq 0} | Remove-Item -Force
}
WHILE ($a -ne $null)
#>