- くだらねえ質問はここに書き込め! Part 239
361 :login:Penguin[sage]:2020/03/26(木) 03:50:09.22 ID:fyr9HCPy - >>352
よく知らないけど、関数とか別ファイルにして、バックグラウンドで起動すれば?
|
- くだらねえ質問はここに書き込め! Part 239
362 :login:Penguin[sage]:2020/03/26(木) 03:59:48.39 ID:fyr9HCPy - >>337
Ruby を学ぶとよい \d+ は、正規表現で、\d は数字、+ は前の文字を1つ以上使う(最長一致で)。 つまり、123x なら、123 を取れる %04d は、sprintf の書式指定文字。 0 は桁数未満の時に0埋めする、4は4桁、d は整数。 123 なら、0123 になる sprintf フォーマット https://docs.ruby-lang.org/ja/latest/doc/print_format.html
|
- くだらねえ質問はここに書き込め! Part 239
363 :login:Penguin[sage]:2020/03/26(木) 05:53:47.98 ID:fyr9HCPy - >>339
Ruby で作った。ただし、DryRun なので実際には実行されません 正規表現は、先頭^・末尾$ と、. をエスケープするので、\. となる。 ^([a-zA-Z]+)\.txt$ 日付は、%Y%m%d そのファイルの最終更新日、20190101 などの、4-2-2桁表示か? aBc.txt → aBc_20190101.txt require 'fileutils' # 絶対パスのディレクトリ名の後ろに、*.txt を付けること! # . で始まる、隠し directory, file を除く glob_pattern = "C:/Users/Owner/Documents/test/*.txt" target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す re = /^([a-zA-Z]+)\.txt$/ Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ .each do |full_path| File.basename( full_path ).match( re ) do |matched| # ファイル名がマッチしたもの fs = File.stat full_path date_str = fs.mtime.strftime "%Y%m%d" # 最終更新日 20190101 4-2-2桁 new_filename = "#{ $1 }_#{ date_str }.txt" # $1 は、capture 部分 dest_path = target_dir + "/" + new_filename FileUtils::DryRun.move( full_path, dest_path ) end end
|
- くだらねえ質問はここに書き込め! Part 239
367 :363[sage]:2020/03/26(木) 07:33:30.35 ID:fyr9HCPy - 日付は、%Y%m%d は、20190101 などの、4-2-2桁表示か?
今日の日付ではなく、そのファイルの最終更新日と解釈した! aBc.txt → aBc_20190101.txt
|
- くだらねえ質問はここに書き込め! Part 239
368 :363[sage]:2020/03/26(木) 07:37:21.04 ID:fyr9HCPy - >>364
>^[a-zA-Z].txt 正規表現は、先頭^・末尾$ と、. をエスケープするので、\. と解釈した! ^([a-zA-Z]+)\.txt$
|