共有フォルダを開いたら、申請書_最終.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(Kensa と kensa が混在) |
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 であること。
そして Kensa と kensa については、自動でまとめずに処理を中止しました。同じ書類の表記ゆれか別物かは名前からは決まらない、という理由です。記入用のテンプレートを出して、人に決めさせる作りでした。
結果です。
正しい名前が付いた : 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_最終.xlsx と kensa_最終.xlsx は同じファイル扱いです。後から作ったほうが、前のものを黙って上書きしました。エラーも警告も出ません。
同じことが2組で起きていました。Kensa_最終.xlsx と Kensa_再修正.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文字だけ見て残りを埋めました。いつもそうなるとは限りませんが、渡していない情報が、相手の中で埋められていないかは確かめる価値があります。

