>>624
Ruby で書いた。
ただし、DryRun なので表示されるだけで、実際には実行されません

require 'fileutils'

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/Documents/test/*"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す

# ^ は先頭から、\d は数字、+ は1文字以上。( ) 内は、$1 でキャプチャー
re = /^(\d+)/

Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path|
old_filename = File.basename( full_path ) # ファイル名
# ファイル名を置換する。format で、0埋め、3桁表示にする
new_filename = old_filename.sub( re ) { "#{ "%03d" % $1 }" }
# ファイル名に変更がない場合は、処理しない
next if old_filename == new_filename

dest_path = target_dir + "/" + new_filename
FileUtils::DryRun.move( full_path, dest_path )
end