Ruby - desktop cleaner

Ruby este un limbaj de scripting dinamic, obiect orientat, foarte ușor de folosit. Matsumoto, creatorul limbajului a spus: "Vroiam un limbaj de scripting mai puternic deca Perl si mai obiect orientat decat Python. Asa am ajuns sa imi creez propriul limbaj".

Ruby - desktop cleaner

Postby smith » 22 Apr 2011, 18:31

Am să prezint mai jos un script foarte simplu scris în Ruby. Rolul acestui post este de a arăta cât de simplu este acest limbaj pentru a crea ceva util.

De mult timp am o problemă (pe care poate mulți o au): se umple desktopul cu multe prostii - sau folderul default în care se pun toate fișierele downloadate cu browserul preferat. Am încercat și software specializat pentru a curăța desktopul, dar nu s-a prins de mine.

Astfel am ajuns să scriu următorul script:
  1. require 'fileutils'
  2.  
  3. def move(files, destination)
  4.  
  5.     Dir.glob(files).each do |file|
  6.    
  7.         if !File.directory?(destination) and file!=File.basename(__FILE__)
  8.             Dir.mkdir(destination,777)
  9.         end
  10.        
  11.         FileUtils.mv(file, "./#{destination}") if file!=File.basename(__FILE__)
  12.     end
  13.    
  14. end
  15.  
  16. file_categories = {
  17.                     "IMGs" => "*.{jpg,jpeg,bmp,png,gif}",
  18.                     "PDFs" => "*.{pdf,chm}",
  19.                     "MP3s" => "*.{wma,mp3,wmv,mp4}",
  20.                     "EXEs" => "*.{exe}",
  21.                     "TXTs" => "*.{txt,rtf}",
  22.                     "SRCs" => "*.{cpp,c,php,js,rb,py,java,pas,dpr}",
  23.                     "RARs" => "*.{rar,zip,tar,gz,bz2,tgz,tar.bz2}",
  24.                     "TORs" => "*.{torrent}",
  25.                     "DOCs" => "*.{doc,docx,pps,ppt,ppsx,pptx,xls,xlsx,odt,odf,odg,odp,ods}"
  26.                   }
  27.                  
  28. file_categories.each do |folder_name, files|
  29.     move(files,folder_name)
  30. end


L-am scris destul de repede așa că nu e cel mai grozav script scris vreodată. De asemenea, folosiți-l cu precauție pentru că nu garantez pentru datele voastre :P (ați putea să faceți un folder de test cu mai multe fișiere de diferite tipuri să vedeți dacă merge).

Să îl rulați aveți nevoie de ruby, care îl puteți descărca de aici.

La instalare nu uitați să bifați să adauge ruby la PATH și să asocieze fișierele cu extensia .rb/.rbw cu ruby. Plasați codul de mai sus într-un fișier cu extensia.rb, îl salvați și dați dublu click pe el să-și facă treaba.

Scriptul îl puteți modifica după nevoi.
1.5p / 2 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Ruby - desktop cleaner

Postby v0id » 24 Apr 2011, 20:16

Doar o mica sugestie: tinand cont de faptul ca e un script facut la repeazeala, dupa cum ai spus, iar comentarii nu exista, poate ar fi bine sa precizezi exact ce face. Probabil ca nu prea multa lumea se prinde din prima despre ce e vorba.
0,0p / 0 votes
A good coder is never on holiday - he may be working on a different machine, that's about as far as it gets.
User avatar
v0id
Word
 
Joined: 05 Jan 2010
Location: 127.0.0.1
Status: 42.5

Re: Ruby - desktop cleaner

Postby smith » 24 Apr 2011, 21:48

Scriptul mută fișiere din locația_curentă (adică locația unde se află scriptul) în foldere. Fișierele sunt mutate pe categorii.
Categoriile se pot observa în hash-ul file_categories care are structura: FOLDER_NAME => FILE_EXTENSIONS.

Pentru fiecare categorie de fisiere funcția move este apelată.

Funcția move creează foldere cu numele specificat în hash dacă folderul nu este creat deja sau dacă există fișiere cu extensia corespunzătoare.

În cod se pot observa niște condiții mai ciudate:
  1. if file!=File.basename(__FILE__)

Acestea apar în două locuri și au două roluri:
  • Să nu se mute pe sine într-un folder SRCs (după cum vedeți în hash se află și extensia .rb)
  • Scriptul se vede și pe sine. Condiția respectivă are grijă să nu creeze folderul SRCs decât dacă există și alte fisiere cu extensiile corespunzătoare în locația curentă în afară de scriptului nostru.
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82


Return to Ruby

Who is online

Users browsing this forum: No registered users and 0 guests