私は処理後に2000個以上の出力ファイルを生成する約100個の入力ファイルを持っています。私は入力ファイルの名前に基づいて出力ファイルに名前を付けることを試みています。入力ファイルに関してファイル名を書く方法
Start cmd /k "G:Path\eachGeo.bat G:\Path\InputGeo\*.csv"
入力が異なるパスに格納され.bat
および入力を実行することによりcmd
を介して読み出されます。私は現在のシステム時刻に基づいて、出力ファイルに名前を付けるためにTime.now.to_i.to_s
を使用しています上記のコード行で
outputfilename = 'Path\outputGeo\\' + Time.now.to_i.to_s +
'_' + eachTag[45..54] + '_output.csv'
。
しかし、現在の時刻をシステムから入力ファイル名に変更したいとします。
Dir.glob("path/*.csv") do |path|
CSV.open(path) do |csv_in|
# ...
out_path = "output_path/%s_%s.csv" % [
File.basename(path, ".csv"),
each_tag[45..54]
]
CSV.open(out_path, "w") do |csv_out|
# ...
end
end
end
これは本当に簡単な例です:
パス名に '/'を使用すると、大量のエスケープ処理を必要としないので、はるかに簡単です。また、変数名をすべて 'lower_case'にしておきましょう。そうすれば' each_tag'を組み込むべきです。 – tadman
あなたは 'name =" path /%d_%s_output.csv "%[Time.now.to_i、each_tag [45..54]]を実行することもできます。これははるかに面倒ではありません。これは単に '%'省略表現を使った 'sprintf'表記です。 – tadman
ありがとうございます。 –