(X) দিনের চেয়ে পুরানো ফাইলগুলি মুছবেন?


31

(এন) দিনের চেয়ে পুরানো প্রদত্ত ফোল্ডারে সমস্ত ফাইল মোছার জন্য উইন্ডোজ কমান্ড লাইনের একটি ভাল বিকল্প কী?

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

আদর্শভাবে, উইন্ডোজ সার্ভার ২০০৮ এ (বা সহজেই ইনস্টলযোগ্য) কিছু।


2
একটি নতুন পদ্ধতি .bat ফাইল ভিত্তিক যে অভ্যন্তরীণ cmd.exe কমান্ডগুলি ব্যবহার শুধুমাত্র এখানে পোস্ট করা হয়েছে: stackoverflow.com/questions/9746778/...

উত্তর:


43

আমি আরও কিছুটা ঘুরে দেখলাম এবং পাওয়ারশেলের উপায় পেয়েছি :

নির্দিষ্ট ফোল্ডারটি থেকে 8 দিনের বেশি পুরানো সমস্ত ফাইল মুছুন (পূর্বরূপ সহ)

dir |? {$_.CreationTime -lt (get-date).AddDays(-8)} | del -whatif

(এটি ঘটানোর জন্য -উয়াটিফ সরান)


1
নিশ্চিত করতে, এটি কি স্থায়ীভাবে ফাইলগুলি মুছবে বা তাদের পুনর্ব্যবহার করবে?
টিএমএস

অপস খুব কঠিন মুখস্থ জন্য !! আমি PowerShell ভালবাসি কিন্তু আমি ভাল উপায় ব্যবহার করছে মনে robocopy
AminM

7

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

হিসাবে সংরক্ষণ করুন <filename>.vbsএবং কার্যকর করুন:

<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]

তৃতীয় প্যারামিটার, [Action]alচ্ছিক। এটি ছাড়া পুরানো ফাইলগুলি <NoDaysSinceModified>তালিকাভুক্ত করা হবে। এটি সেট হিসাবে Dএটি এর চেয়ে পুরানো ফাইলগুলি মুছবে<NoDaysSinceModified>

উদাহরণ

PurgeOldFiles.vbs "c:\Log Files" 8

8 দিনের পুরানো সমস্ত ফাইল তালিকাভুক্ত করবেc:\Log Files

PurgeOldFiles.vbs "c:\Log Files" 8 D

হবে মুছতে সব ফাইল c:\Log Filesপুরোনো তুলনায় 8 দিন বয়সী

নোট: এই Haidong জি এর স্ক্রিপ্ট একটি পরিবর্তিত সংস্করণ SQLServerCentral.com

Option Explicit
on error resume next
    Dim oFSO
    Dim sDirectoryPath
    Dim oFolder
    Dim oFileCollection
    Dim oFile
    Dim iDaysOld
    Dim fAction

    sDirectoryPath = WScript.Arguments.Item(0)
    iDaysOld = WScript.Arguments.Item(1)
    fAction = WScript.Arguments.Item(2)
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFolder = oFSO.GetFolder(sDirectoryPath)
    set oFileCollection = oFolder.Files

If UCase(fAction) = "D" Then
'Walk through each file in this folder collection. 
'If it is older than iDaysOld, then delete it.
    For each oFile in oFileCollection
        If oFile.DateLastModified < (Date() - iDaysOld) Then
            oFile.Delete(True)
        End If
    Next
else
'Displays Each file in the dir older than iDaysOld
    For each oFile in oFileCollection
        If oFile.DateLastModified < (Date() - iDaysOld) Then
            Wscript.Echo oFile.Name & " " & oFile.DateLastModified
        End If
    Next
End If


'Clean up
    Set oFSO = Nothing
    Set oFolder = Nothing
    Set oFileCollection = Nothing
    Set oFile = Nothing
    Set fAction = Nothing

আমি পুরানো ওয়েব সার্ভার লগগুলি মুছতে এই জাতীয় কিছু ব্যবহার করি। বেশ ভাল কাজ করেছে।
জেফস্পস্ট

4

সত্যিই কমান্ড লাইন নয়, তবে আমি লিনিকিউপ্যাডকে সি # স্ক্রিপ্টিং হোস্ট হিসাবে ব্যবহার করতে চাই :
(যা আমাকে কেবল একটি কমান্ড লাইন সি # স্ক্রিপ্টিং আইটেমি-লা ভিবিএস ফাইলের জন্য ধারণা দিয়েছে)

var files = from f in Directory.GetFiles(@"D:\temp", "*.*", SearchOption.AllDirectories)
            where File.GetLastWriteTime(f) < DateTime.Today.AddDays(-8)
            select f;

foreach(var f in files)
    File.Delete(f);

লিনক সত্যিই দুর্দান্ত, আমি আশা করি পাওয়ারশেলের সাথে এটি উপস্থিত হয়।
টেলর গিব


3

সাইগউইনের (বা অন্যান্য বিকল্প) "ফাইন্ড" কমান্ড দিয়ে অনুরূপ কিছু অর্জন করা যেতে পারে। তবে এর জন্য আপনাকে সাইগউইন ইনস্টল করতে হবে বা হাতে পোর্টেবল সংস্করণ থাকতে হবে।



2

আমি আমার সিস্টেমে এটি সম্পাদন করতে অটোআইটি ব্যবহার করি। আমি পছন্দ করি যে আপনি সহজেই এক্সপি করতে .au3 ফাইলগুলি সংকলন করতে পারেন। কোনও সুরক্ষা ত্রুটি পরিচয় করানো তত সহজ নয় যতটা ব্যাট ফাইলই সম্পাদনা করতে পারে with

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.