[過去ログ] 【.cmd】 バッチファイルスクリプト %14 【.bat】 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
218: 157 [sage] 2021/02/25(木) 11:51:36.12 ID:dOCTT7eM(1/2) AAS
>>138
138(3): デフォルトの名無しさん [sage] 2021/01/25(月) 19:13:54.74 ID:P1MpJdzu(1) AAS
質問失礼します。
複数あるフォルダのフォルダ名を、内包しているファイル名に一括変更するスクリプトを作る事は可能でしょうか?
画像リンク

分かりづらく申し訳ないのですが、この様にフォルダ名を内包されたファイル名に変更したいです。
色々と調べたのですが素人故どのような書き方をすればいいのか分からず…
宜しければご教授頂きたいです 宜しくお願い致します。

>>157-160
の、160 のa.rb 内に、Ruby で書いた。
このショートカットに、複数フォルダをD&D する

ソートの昇順・降順は、ソート後の配列.first/last で

ただし、日本語のファイル名では、\x{8356}\x{8387}\x{815B} のように表示されてしまう。
DryRun を使ったので、実際には実行されません

require 'pathname'
require 'fileutils'

# ドットよりも前の、文字列を返す。ab.cd.xy なら、ab を返す。
# ab.cd を返したいのなら、rindex を使う

def before_dot( str )
idx = str.index( "." ) # ドットの位置を、先頭から探す
# idx = str.rindex( "." ) # ドットの位置を、末尾から探す

if idx # ドットが有れば
str[ 0, idx ] # 最初から、idx 文字数分を切り出す
else
str
end
end

次へ続く
219: 157 [sage] 2021/02/25(木) 11:53:03.33 ID:dOCTT7eM(2/2) AAS
# ARGV は、D&D した複数フォルダの配列で、1つずつ処理する
ARGV.each do |full_path|
dir_path = Pathname.new( full_path )
next unless dir_path.directory? # フォルダ以外は処理しない

# 直下のファイルのみを取り出して、ファイル名でソートする
file_names = dir_path.children( ).select( &:file? ).map( &:basename ).map( &:to_s ).sort
file_name = file_names.first # 昇順
# file_name = file_names.last # 降順なら、これを使う

file_n = before_dot( file_name ) # 上で定義した関数
dest_path = dir_path.parent.join( file_n ) # 変更後のフォルダ名

# 変更後のフォルダ名が、既に存在する場合は、エラー
raise "#{ dest_path } が、既に存在します" if dest_path.exist?

FileUtils::DryRun.move( dir_path, dest_path )
end
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.042s