"ফাইলের চেয়ে পুরানো ফাইলগুলি মুছুন" ব্যাচের স্ক্রিপ্ট


8

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


আপনি কি ব্যাচে আবদ্ধ? পাওয়ারশেলের কী হবে?
নাট

পাওয়ারশেলটি কাজ করতে সক্ষম হওয়া উচিত, আমি কেবল ব্যাচ করতে অভ্যস্ত এবং আমি পাওয়ারশেলের সাথে কখনও খেলিনি।
চিগগিনস

উত্তর:


8

যদি পাওয়ারশেলটি গ্রহণযোগ্য হয় (সার্ভার ২০০+ এ এটি ডিফল্টরূপে সক্ষম হিসাবে হওয়া উচিত) এটি ব্যবহার করে দেখুন:

$numberOfDays = 3
$Now = Get-Date
$TargetFolder = “C:\myoldfiles”
$LastWrite = $Now.AddDays(-$numberOfDays)
$Files = get-childitem $TargetFolder -include *.bak, *.x86 -recurse | Where {$_.LastWriteTime -le “$LastWrite”} 

foreach ($File in $Files)
{
    write-host “Deleting File $File” -foregroundcolor “Red”;
    Remove-Item $File | out-null
} 

সস এখানে


2
+1 টি। এছাড়াও, উদ্দেশ্য পরীক্ষার জন্য আপনি "-whatif" ফ্ল্যাগ যুক্ত করতে পারেন: Remove-Item $File -whatif | out-null। তফসিল টাস্ক হিসাবে চালানোর জন্য, কাজের আর্গুমেন্ট হিসাবে আপনার স্ক্রিপ্টটি পাওয়ারশেল.অ্যাক্সের পুরো পথ নির্দিষ্ট করতে হবে।
অ্যান্ডিএন

আমি একই সমাধানটি দিয়ে শুরু করেছিলাম - তবে সমস্ত ফাইল সামনে রেখে মেমরি লোডের সাথে সমস্যার মধ্যে পড়েছিলাম।
টিম ব্যারাস

13
forfiles -pc: \ pathtofiles \ -m * .rar -d -5 -c "cmd / c del @path"

-5আপনি যে ফাইলগুলি মুছতে চান তার বয়স কোথায় (এই ক্ষেত্রে 5 দিন বা তার বেশি বয়সী)। এই স্ক্রিপ্টটি .rarফাইলগুলি মোছা হচ্ছে - -m *.rarআপনি কোনও ফাইলের ধরণ মুছতে চাইলে ড্রপ করুন ।


1
এই সমস্ত উত্তরগুলির মধ্যে এটিই কেবলমাত্র (এখনও অবধি) সরাসরি প্রশ্নের উত্তর দেয়।
জন গার্ডেনিয়ার্স

3

আপনি যদি ব্যাচ ফাইলগুলি ব্যবহার করার জন্য জেদ করেন তবে রবোকপি.এক্সই আপনার উত্তর। এটির দ্রুত (বহুবিধ) এবং খুব শক্ত ust আপনার দৃশ্যের জন্য আপনি নিম্নলিখিত হিসাবে গাইড হিসাবে ব্যবহার করতে পারেন:

:: Moves dir & files older than 3 days to i:\Destination
:: Wildcards acceptable
robocopy i:\Source\ i:\Destination\ /MOVE /MIR /MINAGE:3 /ETA
:: Removes the destination tree
rd /s /q i:\destination

বিকল্পগুলির একটি দীর্ঘ তালিকা রয়েছে, দয়া করে রোবোকপি / করবেন? তাদের সব দেখতে। এমনকি আপনি এটি ইনক্রিমেন্টাল ব্যাকআপ, সময় নির্ধারণ, ব্যাকআপ প্রোফাইল তৈরি ইত্যাদি করতেও ব্যবহার করতে পারেন


রোবকপির জন্য সমস্ত +1! <3 আপনার উদাহরণ পুনরায়: আমি / এমআইআর স্যুইচ এই অবস্থার জন্য সঠিক কিনা তা আমি নিশ্চিত নই, / মোভ চিগগিন্সের প্রশ্নের যত্ন নেওয়া উচিত। নিশ্চিতভাবে একটি জিনিস, রোবোকপির এক টন বিকল্প রয়েছে, সতর্কতার সাথে পরীক্ষা করা প্রয়োজন is
জেমসসিডাব্লু

2

আমি ব্যবহার করতে চান DelEn.exe এই জন্য।

ডেলেন - ডেলিট এনহান্সড - এটি দেল-এর একটি স্যুপ-আপ সংস্করণ। এটি বর্ধিত ওয়াইল্ডকার্ড এবং প্যারেন্ট ডিরেক্টরিগুলি পাশাপাশি তারিখ, সময় এবং আকার ফিল্টারগুলিকে সমর্থন করে। ফাইলগুলি মুছে ফেলা থেকে বাদ দেওয়া যেতে পারে।


2

আপনি হোর্স্ট শ্যাফারের ডেলএজ 32 এর দিকে নজর দিতে পারেন:

http://home.mnet-online.de/horst.muc/wbat32.htm#top

DelAge32 - ver. 2.3 (c) 2003-2008, Horst Schaeffer
Deletes or moves files (path with file pattern) by age (number of days)
Syntax:  DelAge32 filespec age [options]
Options:
  /created /accessed /modified (default) - file stamp used to evaluate age
  /includeRO - include read-only files
  /includeH  - include hidden files
  /includeS  - include system files
  /includeRHS -include read-only, hidden and system files
  /recurse   - include subdirectories
  /subonly   - /recurse excluding initial directory
  /rd        - remove empty subdirectories
  /move path - move files to specified path
  /preview   - list, but no action
  /quiet     - no output

আপনার আদেশটি হিসাবে সহজ হতে পারে:

delage32.exe c:\logdirectory\*.log 3

আমার এই কমান্ডটি নির্ধারিত কাজ হিসাবে চলছে running


এটি সিল্যান্সে হুমকি হিসাবে পতাকাঙ্কিত হয়।
সান

Delage32.exe virustotal.com এ 0/53 রেটিং দেয়, যেখানে শূন্যের অর্থ শীর্ষ 53 এভি সরঞ্জামগুলির মধ্যে কোনও হুমকি শনাক্ত করা যায় না। আপনি আপনার AV কে আরও মূলধারার কিছুতে পরিবর্তন করতে চাইতে পারেন।
রবডাব্লু

এটা আমার পছন্দ নয়। আমি যে কারও জন্য সিল্যান্স ব্যবহার করে delage32 মওকুফ করতে বা forfiles ব্যবহারের জন্য কেবল সতর্ক করছি
সান

1

এটি আপনি যা চান তা করতে আমি লিখেছিলাম এমন একটি পাওয়ারশেল স্ক্রিপ্ট - এটি আরও কিছুটা আরও করে। আমি লগ এবং অন্যান্য অস্থায়ী ফাইলগুলি সাফ করার জন্য এটি ব্যবহার করি।

রেচক পদার্থ-Dem-logs.cmd

powershell.exe -command "& 'c:\purgelogs\purgelogs.ps1' -Filepath D:\SQL\backup\ -filemask *.bak -Maxdays 14 "

purgelogs.ps1:

Param ($filepath, $filemask, $maxdays, [switch]$recurse)

   if (($FilePath -eq $null) -or ($FileMask -eq $null) -or ($MaxDays -eq $null)) {
      write-host "Usage .\purgelogs.ps1 -filepath [Path] -filemask [Mask] -masdays [Max Days]"
      write-host " "
      write-host "Example: "
      write-host "    .\purgelogs.ps1 -filepath c:\temp -filemask *.log -maxdays 30"
      break
      }

   if (Test-Path $FilePath) {

      $FilePath += "*"

      $Now = Get-Date

      $LastWrite = $Now.AddDays(-$MaxDays)

      write-host "Last write time " $LastWrite
      if ($recurse) {
         $Files = get-childitem $FilePath -include $FileMask -recurse | Where {$_.LastWriteTime -le "$LastWrite"}
      } else {
         $Files = get-childitem $FilePath -include $FileMask | Where {$_.LastWriteTime -le "$LastWrite"}
      }

      if ($Files -eq $null) {

         write-host "No matching files found"

      } else {

          foreach ($File in $Files)
            #You can add -whatif to see the consequence û Remove-item $File -Whatif
            {
            write-host "Deleting File $File" -foregroundcolor "Red"; Remove-Item $File | out-null
            }
         }
      }
   Else
      {
      Write-Host "The Folder $FilePath Does Not Exist!"
      }

1

এটি দূরবর্তী কম্পিউটারগুলির জন্য কাজ করবে না। প্রশাসকদের একাধিক কম্পিউটার পরিচালনা করতে হবে। নীচে স্ক্রিপ্টটি যে একাধিক রিমোট কম্পিউটারে ফোল্ডারগুলিতে লগইন না করে মুছতে ব্যবহার করা যেতে পারে।

স্ক্রিপ্টের নীচে 15 দিনের বেশি ফোল্ডার মুছে ফেলা হবে। আপনি যদিও $ দিনের প্যারামিটারটি পরিবর্তন করতে পারেন।

ডি \ \ প্রোগ্রাম ফাইল (x86) \ গতি গবেষণা \ ব্ল্যাকবেরি এন্টারপ্রাইজ সার্ভার \ লগগুলি ব্ল্যাকবেরি লগ ফোল্ডারের জন্য ইউএনসি পাথ। আপনার লগগুলি / ফোল্ডারগুলি যেখানে অবস্থিত সেখানে আপনি ডিরেক্টরিটি পরিবর্তন করতে পারেন।

সার্ভার.টেক্সট ফাইলটিতে আপনার সমস্ত সার্ভারের নাম তালিকাভুক্ত করুন এবং এটি এই স্ক্রিপ্টের মতো একই ডিরেক্টরিতে অবস্থিত হওয়া উচিত।

cd C:\Scripts\Powershellscripts\deletefiles ----> change it to the directory you wanna out this script to

$Days = "15" 
$Now = Get-Date
$LastWrite = $Now.AddDays(-$days)
$server = get-content servers.txt
foreach ($node in $server)
{
get-childitem -recurse "\\$node\D$\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server\Logs" | Where-Object {$_.LastWriteTime -le $LastWrite} | remove-item -recurse -force
}

স্ক্রিপ্টটি .ps1 হিসাবে সংরক্ষণ করুন এবং এটি চালান। আপনি এটি ব্যাচ ফাইলের মাধ্যমে সময়সূচী করতে পারেন। স্ক্রিপ্টের শুরুতে আপনাকে পরিবর্তন ডিরেক্টরি কমান্ড যুক্ত করতে হবে।

আনন্দ কর.


0

বিকল্প পদ্ধতির হিসাবে: ফাইল তৈরির সময় পাওয়ার জন্য ফাইল সিস্টেমের অনুসন্ধানের উপর নির্ভর করার পরিবর্তে (এবং একই দিনে একাধিক দিন ধরে হিট হওয়া, তাদের মেয়াদ শেষ না হওয়া পর্যন্ত) আপনি তৈরির সময় ফাইলটিকে নিজের একটি সূচীতে যুক্ত করতে পারেন। সূচকটি সম্ভাব্যভাবে তৈরির তারিখ অনুসারে কোনও ফাইলের মতোই সহজ হতে পারে, একটি লাইনে প্রতি ফাইলের সাথে একটি পরিচিত স্থানে সঞ্চিত হয়।

যদি আপনার কাছে কোনও মাল্টিথ্রেডেড / মাল্টিপ্রসেস অ্যাপ থাকে যা ফাইল তৈরি করে থাকে তবে আপনি নিজের সূচকটি আরও পরিশীলিত পদ্ধতিতে পরিচালনা করতে চাইতে পারেন।

সুবিধাটি হ'ল আপনার কাছে সর্বদা একটি অপেক্ষাকৃত সহজ-প্রক্রিয়াকৃত ফাইলগুলির একটি নির্দিষ্ট দিনে তৈরি করা তালিকা থাকে যা আপনি পুনরাবৃত্তি করতে পারবেন, বিশদটির জন্য বারবার ফাইল সিস্টেমটি জিজ্ঞাসা না করে।

(এটি তৃতীয় পক্ষের দ্বারা নয় বরং আপনার দ্বারা পরিচালিত এ্যাপ এবং ফাইল তৈরির উপর নির্ভর করবে)।

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