Ruby フォルダ取得 サンプル
前回の話題の続きになります。
HTML5のFileAPIを使用して、ブラウザから ローカルディスクのフォルダ構造を取得するのは、
まぁ時期尚早かとおもったのですが(と言っても、あのあと作っちゃったのデスが(笑))
Rubyで作ってみました。
変数 foldername に入れたディレクトリ以下のフォルダを全部取得して、ファイルに出力します。
出力するファイルの場所やファイル名は、変数 fname で指定することにします。
ファイル名の後半には、日時情報を付けることとしました。
Find.find(foldername) の一文で、ファイルとフォルダの情報を一括で取得してしまいます。
サブフォルダも含めてすべて一括です。
なので、メモリも大量に使っているようです。 ・・ね (てへぺろ)
そして、処理時間もケッコかかってますので ・・いろいろ改善の余地ありです。(笑)
HTML5のFileAPIを使用して、ブラウザから ローカルディスクのフォルダ構造を取得するのは、
まぁ時期尚早かとおもったのですが(と言っても、あのあと作っちゃったのデスが(笑))
Rubyで作ってみました。
変数 foldername に入れたディレクトリ以下のフォルダを全部取得して、ファイルに出力します。
出力するファイルの場所やファイル名は、変数 fname で指定することにします。
ファイル名の後半には、日時情報を付けることとしました。
Find.find(foldername) の一文で、ファイルとフォルダの情報を一括で取得してしまいます。
サブフォルダも含めてすべて一括です。
なので、メモリも大量に使っているようです。 ・・ね (てへぺろ)
そして、処理時間もケッコかかってますので ・・いろいろ改善の余地ありです。(笑)
#! ruby -Ks
# Encoding:Shift_JIS
require 'find'
def wfolder(fn,str)
open(fn,"a") {|f| f.print str+"\n" }
end
foldername = "c:/Users/****/****/" # 取得したいディレクトリを指定。その配下のフォルダをすべて取得します。
t = Time.now
fname = "c:/Users/****/Desktop/list_" + t.strftime("%Y-%m-%d(%H-%M-%S).txt") # 取得したフォルダをファイルに書き出します。
numfolder = 0
numerror = 0
Find.find(foldername) {|fff|
begin
if File::ftype(fff) == "directory"
numfolder += 1 # 取得したものが フォルダであった場合に出力します。
wfolder(fname,fff)
# print fff,"\n"
else # 取得したものが ファイルであった場合 何もしません。
# print "File:",fff,"\n" # ファイルも出力したい時は ここのprint文を有効にしてください。
end
rescue => ex # フォルダやファイル名が文字化け等のときエラーになります。
# print ex,"\n" # 文字化けしたのが どのあたりか知りたい時は、ここを有効にしてください。
# wfolder(fname,ex)
numerror += 1
next
end
}
wfolder(fname,"全フォルダ数(有効数):"+numfolder.to_s+"\n") # 最後にフォルダ数などを出力します。
wfolder(fname,"全エラー数 :"+numerror.to_s+"\n")
print "全フォルダ数(有効数):",numfolder,"\n"
print "全エラー数 :",numerror,"\n"
# Encoding:Shift_JIS
require 'find'
def wfolder(fn,str)
open(fn,"a") {|f| f.print str+"\n" }
end
foldername = "c:/Users/****/****/" # 取得したいディレクトリを指定。その配下のフォルダをすべて取得します。
t = Time.now
fname = "c:/Users/****/Desktop/list_" + t.strftime("%Y-%m-%d(%H-%M-%S).txt") # 取得したフォルダをファイルに書き出します。
numfolder = 0
numerror = 0
Find.find(foldername) {|fff|
begin
if File::ftype(fff) == "directory"
numfolder += 1 # 取得したものが フォルダであった場合に出力します。
wfolder(fname,fff)
# print fff,"\n"
else # 取得したものが ファイルであった場合 何もしません。
# print "File:",fff,"\n" # ファイルも出力したい時は ここのprint文を有効にしてください。
end
rescue => ex # フォルダやファイル名が文字化け等のときエラーになります。
# print ex,"\n" # 文字化けしたのが どのあたりか知りたい時は、ここを有効にしてください。
# wfolder(fname,ex)
numerror += 1
next
end
}
wfolder(fname,"全フォルダ数(有効数):"+numfolder.to_s+"\n") # 最後にフォルダ数などを出力します。
wfolder(fname,"全エラー数 :"+numerror.to_s+"\n")
print "全フォルダ数(有効数):",numfolder,"\n"
print "全エラー数 :",numerror,"\n"