リモートフォルダーにある.emlファイルのリストがあります
\\abcremote\pickup
からすべてのファイルの名前を変更したい
xyz.eml to xyz.html
Rubyを使ってそれを行うのを手伝ってくれませんか。
前もって感謝します。
リモートフォルダーにある.emlファイルのリストがあります
\\abcremote\pickup
からすべてのファイルの名前を変更したい
xyz.eml to xyz.html
Rubyを使ってそれを行うのを手伝ってくれませんか。
前もって感謝します。
前の回答を少し改善します。
require 'fileutils'
Dir.glob('/path_to_file_directory/*.eml').each do |f|
FileUtils.mv f, "#{File.dirname(f)}/#{File.basename(f,'.*')}.html"
end
拡張子なしのFile.basename(f,'.*')
名前が表示されます。そうしないと、ファイルは file_name.html ではなく file_name.eml.html になります。
Rake は拡張子を変更するための簡単なコマンドを提供します:
require 'rake'
p 'xyz.eml'.ext('html') # -> xyz.html
以前の回答を少し改善します。
require 'rake'
require 'fileutils'
Dir.glob('/path_to_file_directory/*.eml').each do |filename|
FileUtils.mv( filename, filename.ext("html"))
end
Dir.glob
そのフォルダの場所にアクセスできる限り、使用できるはずですFileUtils.mv
Pathname.glob('path/to/directory/*.eml').each do |f|
FileUtils.mv f, "#{f.dirname}/#{f.basename}.html"
end
これを行う 1 つの方法は、net-sftp ライブラリを使用することです。以下の方法では、すべてのファイルの名前を目的のファイル拡張子で変更します。これにより、他の形式が変更されていないことも確認されます。
require 'net/sftp'
def add_file_extension(dir, actual_ext, desired_ext)
Net::SFTP.start(@host, @username, @password) do |sftp|
sftp.dir.foreach(dir) do |file|
if file.name.include? actual_ext
sftp.rename("#{dir}/#{file.name}", "#{dir}/#{file.name.slice! actual_ext}#{desired_ext}")
else
raise "I cannot rename files other than which are in #{actual_ext} format"
end
end
end
end