「最新版」が増えたファイル名を一括リネームする。AIに見せた時だけ正解した

Excel管理表で「最新版」「最終版」が増える原因。日付と版数で命名する手順のアイキャッチ画像 整理する・一括変更する

共有フォルダを開いたら、申請書_最終.xlsx の隣に 申請書_本当の最終.xlsx があって、その隣に 申請書_コピー.xlsx がある。どれが今使うものか分からない。日付と版数を付けた名前に、ファイル名を一括リネームしたい。

48ファイル入ったフォルダで実際にやってみました。Excelファイルは1つも壊れず、元のフォルダも無傷で、全部きれいな名前に並びました。それでも、正しい名前が付いたのは48件中9件だけでした。

この記事は、その差がどこから来たのかという話です。AIには3回頼みました。ファイル一覧だけを渡した2回は9件と7件、同じ指示文のままフォルダを見せた1回は48件すべて正解でした。頼み方を変えても正答率は上がらず、見せたら上がった、という結果です。

ただしこれは1つのフォルダで3回試しただけの結果です。「見せたうえで素朴に頼む」は試していないので、指示文一般が効かないと言えるわけではありません。確かなのは、今回渡した一覧には正解となる情報が入っておらず、一覧だけからは正解を決めようがなかったということです。

使ったのは Windows 11 です。ファイル名の扱いがOSによって違うので、ここは先に書いておきます。

使うファイル

架空の共有フォルダを用意しました。48ファイル、すべてExcelです。

書類 件数
申請書 12
見積書 10
議事録 9
作業手順書 9
Kensa(Kensakensa が混在) 8
48

名前はこうなっています。

Kensa_最終.xlsx          Kensa_本当の最終2.xlsx    kensa(改).xlsx
申請書_確定.xlsx          申請書_本当の最終.xlsx     申請書_コピー.xlsx
議事録_旧.xlsx            議事録_最終2.xlsx         見積書_FIX.xlsx
作業手順書_再修正.xlsx      作業手順書_v2.xlsx        …

目標は {書類名}_{YYYYMMDD}_v{NN}.xlsx の形にそろえることです。申請書_20260419_v06.xlsx のように。

始める前に「どうなれば直ったことにするか」を別ファイルに書きました。1件も改名する前にです。あとから書くと、出てきた結果に合わせて条件をゆるめてしまいます。

3つの手がかりが、全部あてにならない

日付順に並べたいので、まず日付の出どころを探します。候補は3つあります。

1つ目、ファイル名。これが一番あてになりません。今回のフォルダでは、Kensa_最終.xlsx が8版のうちいちばん古い1版目でした。逆に 申請書_コピー.xlsx が、申請書12版のうちの最新です。

「最終」の後に「本当の最終」を作った人は、そのとき本当に最終のつもりだったわけで、名前は嘘をつくために付けられたのではありません。それでも結果として、順序とは無関係な言葉が並びます。

2つ目、更新日時。これも今回は使えませんでした。48件のうち28件で、更新日時が中身の作成日と食い違っています。しかも16件は 2026-08-12 11:56 にまとまって潰れていました。フォルダごとコピーした痕跡です。

3つ目、作成日時。これは最悪で、48件すべて同じ値でした。今回の環境では、コピーすると作成日時が「今」になります。実際に手元で確かめました。

コピーの仕方 更新日時 作成日時
エクスプローラ相当(Copy-Item 保たれる 今になる
Python の shutil.copy 今になる 今になる

コピーの仕方によって、残る情報が変わります。フォルダをコピーした記憶があるなら、日付は疑ってください。(同じドライブの中で移動しただけなら、日時は変わりません。コピーと移動は別ものです。)

試しに、更新日時だけで並べ替えてみました。

結果
並び順が正解と一致した位置 11 / 48
「最新版はどれか」を当てられた書類 0 / 5

5種類すべてで、最新版を取り違えました。

では正解はどこにあったのか。各ファイルを開いた中のセルです。「文書情報」というシートに作成日と版が書いてありました。外側からは分からず、中を開くしかありませんでした。

何より先に、台帳を作る

ここから先は、ファイルの名前を書き換える話になります。やり直しがきかない操作なので、手順の順番が大事です。

これまで扱ってきた「表の中身を直す」作業では、直したあとに検算すれば足りました。元のファイルが残っているので、いつでも突き合わせられるからです。

リネームは違います。元の名前が消えます。あとから「この順番、おかしくないか」と気づいても、比べる相手がもういません。

なので順序が逆になります。検算してから直すのではなく、直す前に記録を取る。

記録(台帳)に入れる項目です。CSVで十分です。

項目 なぜ要るか
旧ファイル名 戻す先
新ファイル名 戻す元
サイズ 取り違えの検出
ハッシュ値 ファイルの中身から作る指紋のような値。中身が変わっていないことを強く確認できる。名前だけでは同じものだと言えない
更新日時 改名では変わらないはずの値。変わっていたら操作ミス
処理結果 途中で止まったとき、どこまで進んだか

順番はこうです。

1. 台帳を作る(この時点ではまだ1件も改名しない)
2. 台帳を保存する
3. 台帳を読んで改名する
4. 改名後にもう一度ハッシュを取り、台帳と照合する

1が無い実行は、結果が正しくても不合格にしました。戻せないからです。

台帳が無いと、戻せない

実際に試して比べました。どちらもコピーしたフォルダで実行しています。

台帳を作らず、日付だけで改名した場合。

改名できた : 43件
失敗       : 5件(改名先の名前が既にあった)
ファイル数 : 48のまま

失敗した5件は、同じ書類で作成日が同じもの同士です。日付だけの名前にすると同じ名前になってしまいます。ここで上書きされなかったのは運ではなく、Windowsが拒否したからです。改名先に同じ名前があると、エラーになって止まります。

問題はそこではありません。残り43件は、もう名前が変わっています。何だったのかは、フォルダを見ても分かりません。

台帳を作ってから改名した場合。

改名           : 48/48 成功
中身のハッシュ : 48/48 一致
台帳から復元   : 元の名前・中身とも完全に一致

戻せます。「戻せるはず」ではなく、実際に1回戻して確かめました。

もうひとつ試しました。1ファイルをExcelで開いたまま実行するという、共有フォルダでは普通に起こる状況です。

開いていた1件 : 改名できずエラー
結果          : 47件が新しい名前、1件が古い名前のまま(混在)
台帳から復元  : Excelを開いたままでも47件を戻せた

中途半端な状態からも戻れました。台帳に「どこまで成功したか」を書いておけば、途中で止まっても復旧できます。

AIに頼もうとすると、最初でつまずく

ここまで手作業の話をしてきました。AIに頼めばいいのでは、と思うところです。

ところが、48ファイルはチャット画面に渡せません。添付できる枚数には限りがありますし、フォルダの構造そのものを渡す方法もありません。業務ファイルを外部サービスに送ること自体、規定で禁止されている職場も多いはずです。

現実的にできるのは、ファイルの一覧を貼り付けて、スクリプトを書いてもらうことです。名前とサイズと更新日時だけの、こういう一覧です。

更新日時              サイズ  ファイル名
2026-02-27 00:00     5063  Kensa_最終.xlsx
2026-08-12 11:56     5063  Kensa_確定.xlsx
2026-07-26 00:00     5072  申請書_コピー.xlsx
…(48行)

ここが、これまでと決定的に違うところです。表の中身を直す作業なら、AIはファイルを読んで、処理して、自分で検算まで済ませてくれました。今回はファイルを見ていません。見ないまま、あなたのフォルダで動くスクリプトを書くことになります。

この条件で3回試しました。1回目と2回目は一覧だけ。3回目だけ、フォルダそのものを見せました。

一覧だけ渡した

1回目は、素朴に頼みました。

共有フォルダのExcelファイルの名前がバラバラです。日付と版数で統一したいので、リネームするスクリプトを書いてください。

返ってきたスクリプトは、思っていたよりずっと丁寧でした。頼んでいないのに、次のことを全部やっています。

  • 改名の前に台帳CSVを保存する
  • あとから元の名前に戻すための取り消し機能(--undo)を付ける
  • 何も指定しなければ実行せず、確認だけして終わる
  • Excelが開いているときにできる隠しファイルを対象から外す

「最終」「確定」といった言葉を順序の根拠に使わない、とも明言していました。16件が同じ時刻に固まっていることも見つけて、警告を出しています。

実際に動かしました。48件すべて改名でき、中身は1バイトも変わらず、元のフォルダも無傷--undo で完全に戻ることも確かめました。

そのうえで、正解と突き合わせた結果です。

正しい名前が付いた : 9 / 48(18.8%)

手順は完璧で、中身が合っていません。順序の根拠に更新日時を使ったからです。その更新日時が、28件で狂っていました。

そして48件すべてに番号を振りました。「決められない」として残したものはゼロです。同じ時刻の16件についても、警告は出しつつファイル名順で仮の番号を振っています。

同じ状況で、指示文を手当てした

2回目は、条件を細かく書いた指示文にしました。渡す情報は1回目と同じ一覧だけです。

共有フォルダのExcelファイルの名前がバラバラで、どれが最新か分かりません。
下の一覧のファイルを、次の規則にリネームするスクリプトを書いてください。

  {書類名}_{YYYYMMDD}_v{NN}.xlsx

【まず考えてほしいこと】
1. このファイル一覧から、各ファイルの「本当の作成日」と「版の順序」が
   確実に分かるかどうかを判断してください。分からないなら、そう書いてください。
2. 同じ日付になるファイルがあった場合、どうなるかを示してください。

【スクリプトの条件】
3. リネームする前に、旧名・新名・サイズ・ハッシュ・更新日時を記録した
   台帳(CSV)を必ず先に出力してください。
4. 台帳から元の名前に戻せるようにしてください。
5. 途中で失敗した場合に、どこまで進んだかが分かるようにしてください。
6. 元のフォルダは変更しないでください。
7. 推測で順序を決めないでください。決められないものは、
   そう分かる形で残してください。

【最後に報告してほしいこと】
8. このスクリプトで正しくリネームできる保証があるか。無いなら、何が足りないか
9. あなたが確認できていないことは何か
10. 実行する人が、実行前に確かめるべきことは何か

返ってきたのは1,464行のスクリプトでした。「調べるだけ」「計画を作る」「実行する」「元に戻す」の4つに分かれています。

「元のフォルダを変更しない」と「リネームする」は両立しないと指摘して、別フォルダにコピーしながら名前を変える方式にしていました。元の場所で改名する機能は、意図的に作っていないそうです。

「調べるだけ」のモードを動かすと、仕込んだ状態を全部言い当てました。48件の作成日時が同一であること、16件の更新日時が秒まで同じこと、32件の時刻がきっかり 00:00 であること。

そして Kensakensa については、自動でまとめずに処理を中止しました。同じ書類の表記ゆれか別物かは名前からは決まらない、という理由です。記入用のテンプレートを出して、人に決めさせる作りでした。

結果です。

正しい名前が付いた   :  7 / 48(14.6%)
名前を付けた件数     : 39
決められないと残した : 9

正答率は上がりませんでした。むしろ下がっています。

変わったのは別のところでした。9件について「決められない」と言って、番号を振らずに残しています。1回目はゼロでした。

そして自分で、こう書いてきました。

31件は「命名できた」と表示されますが、これは「日付が正しい」という意味ではありません。「同じ日付の他のファイルと衝突しなかった」という意味でしかありません。--date-source fs-mtime を使う限り、31件すべてに間違った日付が入っている可能性があります。そしてその間違いを、このスクリプトは検出できません。

引用の「31件」は、AIが一覧を見て見積もった数です。実際にこちらで動かすと、条件の指定によって39件になりました。数え方が違うだけで、言っていることは同じです。

そして実際、名前を付けた39件のうち正解は7件でした。自分の限界を、正確に言い当てています。

なお、この記事の正答率は48件を分母にしています。「決められない」として残した9件は、正解の名前が付いていないので不正解として数えました。保留したこと自体は良い判断ですが、名前が揃っていないのは事実なので、そう数えています。

フォルダを見せた

3回目は、2回目と一字一句同じ指示文を使いました。違うのは、一覧を貼る代わりにフォルダの場所を教えて、開いてよいと伝えたことだけです。

正しい名前が付いた : 48 / 48(100%)

到達の仕方は、使えない根拠を1つずつ潰していく作業でした。

調べたもの 判定
作成日時 48件すべて同一 → 使えない
更新日時 28/48が中身と食い違う → 使えない
Excelファイル内部の作成日 全件同一 → 使えない
ファイル名の言葉 逆方向に誤導する
中のセル 唯一の根拠

ファイルを開いて中を見た結果、「文書情報」シートに作成日と版があることを見つけています。一覧しか渡していない2回では、原理的にたどり着けない場所でした。

100点を取ったうえで、こう書いてきました。

このフォルダで自動リネームが成立したのは、たまたま中身に答えが書いてあったからです。 それが無ければ「順序は決められません」と答えるしかありませんでした。スクリプトは、その「決められない」を握りつぶさず _未確定 として残すように作ってあります。48件全部が改名できたという結果より、決められないものを決めなかったという性質のほうが、このスクリプトの価値だと思っています。

今回の比較で差が出たのは、見られる情報だった

3回を並べます。

1回目
見えない・素朴
2回目
見えない・手当て
3回目
見える・手当て
正しい名前 9/48 7/48 48/48
決められないと残した 0 9 0
中身が壊れた件数 0 0 0
元フォルダの変更 なし なし なし
台帳 あり あり あり

2回目と3回目は、同じ指示文です。違いはフォルダを見せたかどうかだけで、14.6%が100%になりました。

いっぽう1回目と2回目は、渡した情報が同じで指示文だけが違います。こちらは18.8%から14.6%へ、わずかに下がりました。

手当てした指示文が無駄だったわけではありません。変えたものが、正答率ではなかったというだけです。2回目は9件について「決められない」と言い、31件の日付が全部間違っている可能性があると自分から書きました。1回目は48件すべてに番号を振って、そのまま渡してきました。

今回の3回について整理するとこうなります。

  • 今回の2回目では、手当てした指示文で「決められない」の申告が増えた(0件→9件)
  • 今回の1回目と2回目では、指示文を変えても正答率は上がらなかった(18.8%→14.6%)

ここから言い切れる範囲は、思ったより狭いです。試したのは「見えない・素朴」「見えない・手当て」「見える・手当て」の3通りで、「見える・素朴」を試していません。組み合わせが1つ空いているので、指示文の効き目そのものを測ったことにはなりません。

実測とは別に、理屈の上で確実に言えることが1つあります。今回渡した一覧には、正解となるセルの情報が入っていません。名前・サイズ・更新日時しか無いのですから、そこから正解を確定する方法は原理的にありません。どんな指示文を書いても同じです。

逆に言えば、この記事が示せたのは「渡す情報が足りているかどうかを先に見ろ」ということまでです。指示文の工夫が無意味だという話ではありません。

見ていないと、思いつかないこと

「見えるかどうか」の差は、正答率だけではありませんでした。

こちらで実験していたとき、Excelでファイルを1つ開いたまま処理を走らせたら、改名を始める前にプログラムが落ちました。

原因は、Excelがファイルを開くと同じフォルダに作る ~$申請書_修正後.xlsx のような隠しファイルでした。これは読み取ろうとするとエラーになります。フォルダの中身を順に読んでいく処理は、そこで止まります。

つまずきは2段階でした。まず、この隠しファイルを読もうとして、改名を始める前に止まりました。除外するようにして走らせ直すと、今度は開いていた本体そのものが改名できず、47件が新しい名前・1件が古い名前という混在になりました。先に書いた実験結果は、この2段階目のほうです。

この隠しファイルは、今回渡したような普通の一覧には出てきません。隠しファイルも表示する設定で一覧を取れば写りますが、そうしなければ存在すら分かりません。

ただし今回は、3回とも除外していました。見えない2回も含めてです。よく知られた条件だからでしょう。知識として知っていることと、目の前のフォルダを見て気づくことは別です。今回はたまたま前者で足りました。足りない条件のほうが多いはずです。

もうひとつ、この記事のサンプルを作っているときに起きたことを書きます。

48ファイルを生成したはずが、できあがったのは46ファイルでした。

原因は大文字と小文字の違いでした。今回のWindows 11では、Kensa_最終.xlsxkensa_最終.xlsx は同じファイル扱いです。後から作ったほうが、前のものを黙って上書きしました。エラーも警告も出ません。

同じことが2組で起きていました。Kensa_最終.xlsxKensa_再修正.xlsx の2件が消えて、48件が46件になったわけです。1組だけなら47件にしかなりません。

この記事が扱っている現象そのものを、記事を作る側が踏みました。「ファイル数が合っているか」を数える検査を入れていなかったので、気づくまで時間がかかりました。

書いている側も、同じことをした

もう1つ、正直に書いておきます。この記事の実験は、一度やり直しています。

1回目と2回目に渡したファイル一覧48行のうち、実物と合っていたのは15行だけでした。

件数
存在しないのに書いたファイル名 8
実在するのに落としたファイル名 8
名前は合っているが更新日時が違う 19
名前は合っているがサイズが違う 24

この4つの数は重なっています。更新日時が違う19件とサイズが違う24件は18件が同じ行なので、足すと二重に数えることになります。48行のうち、1行まるごと正しかったのが15行とだけ読んでください。

一覧をファイルに書き出したところまでは正しくやっていました。そのあと、先頭の700文字だけを画面で確認して、残りを手で書き写しました。見ていない部分を、それらしく埋めたわけです。

結果として、1回目と2回目は存在しないフォルダに対してスクリプトを書いていました。両方とも破棄して、一覧を全文読み直してから実行し直しています。この記事に載せた数値は、やり直したあとのものです。

3回目だけは影響を受けませんでした。フォルダの場所を渡したので、書き写す作業が無かったからです。

同じことを避けるなら、やることは2つです。一覧は手で打ち直さず、出力したものをそのまま貼る。そして貼ったあとに行数を数えて、元と合っているか確かめる。48行と48行が合っていれば、少なくとも件数の取り違えは防げます。

この記事は「見ていないものについては分からない」という話です。それは、AIに限った話ではありませんでした。見ていない部分をそれらしく埋めてしまうのは、こちらも同じでした。

この方法が使えないとき

いちばん大事な前提を書きます。

今回うまくいったのは、ファイルの中に作成日と版が書いてあったからです。普通の共有フォルダに、そんなセルはありません。3回目のAI自身が、実行前の確認事項の3番目として、そう書いています。

本番の共有フォルダに「書類名/作成日/版」のセルがあるか確認する。 今回のフォルダにはありましたが、普通の共有フォルダにはまず無いと思ってください。無ければ全件が _未確定 になります。それは正しい動作ですが、「このやり方が使えない」という意味です。その場合は別のアプローチが要ります。

付け加えると、このAIはサンプルが練習用に作られたデータであることも見抜いていました。全ファイルが5KB前後で、内部の記録が秒まで同一で、構造が同じだったからです。指摘は正しく、実際に生成したものです。

条件 理由
ファイルの中に日付や版が書かれていない 本命の前提。 無ければ順序を決める根拠がなく、全件が保留になります。それは正しい動作ですが、この方法が使えないということです
フォルダをコピーした記憶がある 更新日時が壊れています。今回は28/48が食い違いました
同じ書類・同じ日付のファイルがある 日付だけの名前では衝突します。今回は5組ありました
誰かがファイルを開いている そのファイルだけ改名できず、中途半端な状態になります
最新版が正しい版とは限らない 差し戻された版のほうが新しいことは普通にあります。番号は順序を見せるだけで、どれを使うべきかは答えません

最後の点は、3回とも同じことを言っていました。名前を整えても、どれが正なのかは解決しません。むしろ整然と並ぶぶん、間違った順序ほど信じてしまいます。

そもそもの話をすると、「最新版」「最終」といった言葉をファイル名に使わない運用にできるなら、そちらが本筋です。日付と版数を最初から付けていれば、この作業自体が要りません。ただし、すでに手元にある48ファイルは、それでは片づきません。入口を直すのと、いま溜まっているものを片づけるのは別の作業です。

送る前に確認すること

今回AIへ渡したものを、正確に書いておきます。1回目と2回目はファイル名の一覧だけ、3回目はフォルダの中身そのものを読ませました。

3回目のように中身を読ませるのは、ファイルを送るのと同じことだと考えてください。そして一覧だけの場合でも、ファイル名を貼るだけでけっこうな情報が出ていきます。

  • 取引先名や案件名が入ったファイル名
  • 担当者の名前
  • 金額や社内の符丁
  • フォルダ構成から分かる組織や進行状況

AIサービスに貼り付けるのは、社外にデータを出すことです。試す前に、自分の職場のルールを確認してください。

そして、スクリプトを実行するときは次を守ってください。

  • 本番の前に、別の場所へバックアップを取る。外付けドライブなど、この作業で書き換わらない場所に。コピーしたらファイル数とハッシュ値を照合して、ちゃんと取れたか確かめる
  • 必ずコピーしたフォルダで試す。本番の共有フォルダでいきなり動かさない
  • 台帳が出ているか確認してから実行する。出ていないなら実行しない
  • 旧名と新名の一覧を、実行前に人が目で見る。ここが唯一の関門
  • 名前の衝突を先に調べる。大文字小文字を無視しても重複しないか、既にあるファイルとぶつからないか
  • 上書きは禁止にする。1件でも想定外のエラーが出たら、そこで止める
  • 一度戻してみる。戻せることを確かめてから本番に使う
  • 誰もファイルを開いていない時間帯にやる。同期を止めても他の人が開くのは防げません。作業する時間を先に伝えておく
  • クラウド同期は、同期が終わったのを確かめてから止める。作業後に戻す

1番目を落とさないでください。台帳は名前を戻せますが、中身を失ったら戻せません。スクリプトの不具合や操作ミスでファイルそのものが消えた場合、台帳には何の力もありません。

まとめ

「最終」「本当の最終」が並んだ48ファイルのフォルダを、日付と版数の名前に直しました。

ファイル名も、更新日時も、作成日時も、順序を教えてくれませんでした。更新日時で並べると5種類すべてで最新版を取り違え、48件中11件しか正しい位置に来ません。正解はファイルを開いた中にしかありませんでした。

リネームは元の名前を消します。だから順序が逆になります。検算してから直すのではなく、直す前に台帳を作る。台帳があれば、間違った改名からも戻せました。1回目は9件しか合っていませんでしたが、完全に元へ戻せています。

AIには3回頼みました。3回とも、中身は1バイトも壊れず、元のフォルダも無傷でした。台帳と戻す手段は、1回目は頼まなくても用意し、2回目と3回目は指示どおりに用意しました。失敗したのは、正しさだけです。

そして頼み方を工夫しても、正答率は上がりませんでした。18.8%が14.6%になっただけです。工夫が変えたのは「決められない」と言う回数のほうでした。同じ指示文でフォルダを見せたら、100%になりました。ただし「見せたうえで素朴に頼む」は試していません。1つのフォルダで3回、組み合わせも1つ空いたままの結果です。

なお今回使ったのは Claude(Opus 5)で、環境は Windows 11 です。他のAIサービスやOSで同じ結果になる保証はありません。ファイル名の大文字小文字の扱いは、OSによって変わります。

最後にもう一度書きます。今回は、見えていない部分を推測で埋めた例が2つありました。AIは更新日時から順序を作り、この記事を書いた側は一覧を700文字だけ見て残りを埋めました。いつもそうなるとは限りませんが、渡していない情報が、相手の中で埋められていないかは確かめる価値があります。

タイトルとURLをコピーしました