Wednesday, April 16, 2008

Renombrar archivos en Ruby - Parte 2


Si han leído mis post anteriores:

Renombrar archivos en Ruby y Array.sort en Ruby

Sabrán que hice un programa para renombrar archivos en Ruby...Y además que el Array.sort no funciona bien con valores alfanuméricos...

Esto significa que la primera versión de mi programa no funciona -:( Es decir, funciona la primera vez, pero la segunda por el error en el Array.sort comienza a eliminar archivos...Algo que nadie quiere que pase...A mi me pasó -:(

En fín...Luego de algunos cambios y varias pruebas, tengo la versión final del programa que ahora si funciona sin ningún problema -;)

$Folder = Array.new
$Files = Array.new
$counter = 0
$count = 0

print("Ingrese la carpeta: ")
$Dir_Text = gets.chop!
print("Ingrese la extension: ")
$Ext_Text = gets.chop!
$Dir_Text.sub!("\\","\\ \\").delete!(" ")

Dir.foreach($Dir_Text) {|x| $Folder.push(x)}

for file in $Folder
  $long = file.length - 3
  if(file[$long,3] == $Ext_Text)
  $Full_File = $Dir_Text + "\\\\" + file
  $Files.push($Full_File)
  end
end

for file in $Files
  $count = 0
  for do_file in $Files
    $len_count = $Files[$count].length
    $len_counter = $Files[$counter].length
    $last_count = $Files[$count].rindex("\\") + 1
    $len_count -= $last_count
    $len_counter -= $last_count
    if $Files[$count].slice($last_count,$len_count).to_i > 
       $Files[$counter].slice($last_count,$len_counter).to_i
      $aux = $Files[$count]
      $Files[$count] = $Files[$counter]
      $Files[$counter] = $aux
    end
  $count += 1 
  end  
  $counter += 1
end

$counter = 0
for file in $Files
  $counter += 1
  $New_File = $Dir_Text + "\\\\" + $counter.to_s + "." + $Ext_Text
  File.rename(file,$New_File)
end

puts "#{$counter} archivos convertidos"

Ruby es un lenguaje excelente, pero como siempre tiene sus pequeños detalles, que debemos investigar y probar -:)

Saludos,

Blag.

No comments: