Быстрый Ruby Batch переименовывает - PullRequest
0 голосов
/ 10 января 2011

Я пытаюсь связать несколько разных скриптов, которые я заметил здесь и здесь текст ссылки Попытка получить базовый скрипт, который позволит мне удалять символы или переименовывать файлы с учетом символов каталога и расширения файлапо пользователю.

Я изо всех сил пытаюсь связать все это вместе.Вот где я до сих пор.

    require 'fileutils'

define renamer(strip, stripdetails) 
# So this is a strip function.

    def strip(str,char)
   new_str = ""
   str.each_byte do |byte|
      new_str << byte.chr unless byte.chr == char
   end
   new_str
end
# and then retrieve details from user.

#Get directory of files to be changed.
def stripdetails(strip myname)
 puts "Enter Directory containing files"
 STDOUT.flush
 oldname = gets.chomp
 puts "what characters do you want to remove"
 str = gets.chomp
 puts "what file extension do files end in?"
 fileXt = gets.chomp
 end

#And I found this from stackoverflow(I don't have enuff credits to post another hyperlink)
old_file = "oldname"
new_file = strip(oldname,str)
FileUtils.mv(old_file, new_file)

Ответы [ 2 ]

3 голосов
/ 10 января 2011

Вот рефакторинг вашего кода.Это не совсем понятно из вашего вопроса или вашего кода, но я предполагаю, что вы хотите удалить заданные символы из каждого имени файла в каталоге.

Обратите внимание, что метод strip (), скопированный из сообщения в блоге, совершенно не нужен, поскольку это плохая переопределение встроенного метода tr().

#Given a directory, renames each file by removing
#specified characters from each filename

require 'fileutils'

puts "Enter Directory containing files"
STDOUT.flush
dir = gets.chomp
puts "what characters do you want to remove from each filename?"
remove = gets.chomp
puts "what file extension do the files end in?"
fileXt = gets.chomp

files = File.join(dir, "*.#{fileXt}")
Dir[files].each do |file|
  new_file = file.tr(remove,"")
  FileUtils.mv(file, new_file)
end
0 голосов
/ 10 января 2011

Эта программа никогда не вызывает ваш метод stripdetails.Попробуйте удалить строки def stripdetails.. и end в блоке «Получить каталог файлов, которые будут изменены», чтобы код работал в той же области.

...