ファイル名の一括置換

嫁から「ファイル名の一括置換ってどうやるの?」って聞かれたのでここに書いてしまおうと思い記事にしました。

はじめに(想定する状況)

詳しい状況については不明ですが、非エンジニアで事務作業をしている人間なので、「Word、Excelが使えるWindows環境」という想定をします。また、仮想環境やサーバなどが使えるかは考慮せず、Linuxコマンドも使えないという状況を想定します。

SakuraEditorだけは入れてもらったほうがいいと思います。基本はインストーラで次へだけですから難しいところはありませんし…。ただし、別に必須ではないのでインストール不可の場合を想定して代替案も一応書きます。

一応手順上は、ファイル名の先頭に今日の日付(yyyymmdd)をつけるだけにしますが、具体的なリネーム前後の名前について要件は不明であるので、いったんは本人にリスト化してから流し込みをしてもらいます。だから「lsとmvをパイプするだけやん」とか解決になりません。

手順

手順は下記のとおりです。

  • 現在のファイル名の一覧を得る
  • 置換後のファイル名の一覧を作成する
  • MS-DOS/PowerShellのmoveコマンドに成形して実行する

moveコマンドは、[move before.txt after.txt]でファイルのリネームができます。

現在のファイル名の一覧を得る

moveコマンドに渡すbeforeに相当する現在のファイル名の一覧を得ます。

これをSakuraEditorに張り付けるとファイル名の一覧になります。

お好みでフォルダ名の部分は置換で消してください。

SakuraEditorが使えない場合は、下記のようにGet-ChildItemで、file.txtに書き出しができます。

置換後のファイル名の一覧を作成する

数が10件程度であればテキストエディタ上で作ってもよいですが、数が多ければエビデンスとして残すためにもExcel上で編集作業するほうが良いかもしれません。

こんな感じで作ります。ファイルの種類に応じてルールが違う場合には都度フィルタや並べ替えを駆使して表を作ってください。

moveコマンドに成形して実行する

表のファイル名をmoveコマンドに成形するだけなのであとは簡単です。

=”move ‘”&A1&”‘ ‘”&B1&”‘”

このようにファイル名の前後に’をつけています。

これでファイルのリネームをちまちまやらずに一括でできます。

補足

PowerShellの起動は、フォルダを開いてShift+右クリックすると楽です。

また、moveコマンドは一行ずつではなく、まとめて貼り付けて実行できます。