# Post by author (@BD1pt0ZCnY)

- Published: 2026\-03\-06T00:06:31\.198Z
- Canonical: [https://diary.soushou.net/posts/raAEDwopGh](https://diary.soushou.net/posts/raAEDwopGh)

## Content

codexに似たようなスクリプトを出力できるであろうプロンプトを作れ、と言ったら以下のようなものが出力された。詳細だけど、正直大体のことは最近のLLMなら勝手に配慮してくれる気はする。:

あなたはWindows向けのPowerShell実装者です。以下仕様を厳密に満たすCLIツールを作成してください。GUIは不要です。

【目的】
複数の移行元フォルダを、指定した移行先ドライブへrobocopyで安全に移行する。
実行ログは移行先ドライブへ保存し、ターミナルには細かいファイル単位ログを出さない。
全件成功後のみ、削除前にverify結果の要約を表示して最終確認を取る。

【成果物】
1. `Run-FileMigration.ps1`
2. `Start-FileMigration.cmd`（ダブルクリックでターミナル起動→対話実行）
3. 使い方（短く）

【必須仕様】
1. 入力
- 移行元: 複数指定可（カンマ区切り or 改行区切り）
  例: `D:\src, D:\image\download, D:\画像ファイル, E:\movie`
- 移行先: ドライブ文字（例 `H` または `H:`）

2. バリデーション
- 移行元はフルパスの既存フォルダのみ許可
- 移行元と移行先が同一ドライブならエラー停止
- ドライブ直下（例 `D:\`）を移行元としては禁止
- エラー時は即停止し、理由を明確に表示

3. 実行ロジック（各移行元ごとに順番実行）
- コピー先は「移行元ドライブ以降の相対パス」を移行先ドライブに再現
  例: `D:\a\b` -> `H:\a\b`
- 各移行元に対して以下4フェーズを実行
  - small: `/E /MAX:4194304 /DCOPY:DAT /COPY:DAT /XJ /R:1 /W:1 /MT:64`
  - mid: `/E /MIN:4194304 /MAX:268435456 /DCOPY:DAT /COPY:DAT /XJ /R:1 /W:1 /MT:8`
  - large: `/E /MIN:268435456 /DCOPY:DAT /COPY:DAT /XJ /R:1 /W:1 /MT:1 /J`
  - verify: `/E /DCOPY:DAT /COPY:DAT /XJ /R:1 /W:1 /MT:128`
- ログは移行先ドライブ配下 `\<dest>:\logs\...` に保存（small/mid/large/verifyを分離）
- ログは詳細をすべて残すこと（robocopyの詳細ログ）
- ターミナルは簡易表示のみ（進行中フェーズ、成功/失敗、全体進捗）。ファイル単位の行は表示しない

4. 失敗判定
- robocopy終了コード `0～7` を成功、`8以上` を失敗として即停止
- 失敗時は以降の処理（削除確認含む）を行わない

5. 削除前確認
- 全件成功後のみ、各移行元のverifyログから「robocopy末尾サマリー（合計/コピー済み/スキップ/不一致/失敗/終了時刻）」を抽出して表示
- その後、1回だけ質問:
  `すべての移行元を削除しますか？ (yes/no)`
- `yes` のときのみ全移行元を削除。`no`なら削除しない

6. 文字コード
- 日本語環境前提。robocopyログの読み取りはShift_JIS (CP932) を優先
- スクリプト内メッセージは日本語で自然に表示
- 文字化けしない実装にする

7. UX
- 実行開始時に「停止は Ctrl+C」で中断できることを明示
- 初心者向けにメッセージをわかりやすくする

【実装制約】
- 外部モジュール不使用（PowerShell標準のみ）
- PowerShell 5.1/7 で動くよう配慮
- GUI実装は不要

【出力形式】
- まず `Run-FileMigration.ps1` の全コード
- 次に `Start-FileMigration.cmd` の全コード
- 最後に実行例を2～3行
- 曖昧な説明ではなく、実行可能な完成コードを出してください
