Windowsのポチポチ業務を爆速化するPowerShell、ファイル名を変更する方法


みなさんこんにちは、テラド(@terashin1226)です!

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。

前回は複数のファイルを別ディレクトリにコピーし、名称を変更するスクリプトを作成しました。

Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
複数ファイルを一気にリネームする方法をご紹介!今回は複数のファイルをCopy-Itemというコマンドレットを使い、ファイル名を変更し別フォルダにコピーする方法をお伝えします!

今回はPowerShellでファイル名を変更する方法をご紹介します。

それではいってみましょう!

ファイルの名称を変更する

ファイル名を変更するにはコマンドレットRename-Itemを使用します。

基本的な構文は以下の通りです。

Rename-Item -Path “変更するファイルのフルパス” -NewName “変更後のファイル名”

デスクトップのinputディレクトリにあるファイルの名称変更をするスクリプトは以下のようになります。

Pathパラメータにはディレクトリを含むフルパスを指定します。NewNameパラメータはファイル名だけ指定でOKです。

「いつも隣に.txt」というファイルがあります。

スクリプトをISEで実行すると…

このようにファイル名が変更されました。

複数ファイルの名称を変更する

オフィスの現場では1ファイルだけの名称変更するより、複数ファイルを変更するほうが多いと思います。

複数ファイルの名称を変更する場合はGet-ChildItemと組み合わせます。

Get-ChildItem | Rename-Item -NewName{$_.Name -Replace ‘置換対象の文字列’,’置換後の文字列’}

{}内でReplace演算子を使うことで元のファイル名を置換した文字列を、新しいファイル名として指定することができます。

NewNameパラメータはForEach-Objectと同様の動きをします。

Get-ChildItemで取得されパイプラインで引き渡された複数のファイルは、自動変数「$_」に格納され順次処理をすることができます。

「$_.Name」の「.Name」はプロパティといい、引き渡されたファイルから名称を取り出すことができます。

パイプライン、ForEach-Objectについてはこの記事を参照してください。

Windowsのポチポチ業務を爆速化するPowerShell、パイプラインを使いコマンドレット間で値を引き渡す方法
複数のファイルを一気にリネームする方法をご紹介!今回はコマンドレット間でオブジェクトを引き渡すパイプラインと、ForEach-Objectというコマンドレットを使って難しい構文を書かずに繰り返し処理を実現する方法をご説明します!

拡張子を「.txt」→「.log」に変更するスクリプトをご紹介します。

Set-Locationでファイル名を変更したいファイルの入ったディレクトリを、カレントディレクトリにするのを忘れないようにしましょう。

デスクトップのinputディレクトリに拡張子が「.txt」のファイルが複数入っています。

スクリプトをISEで実行すると…

一気に複数ファイルの拡張子が変更されました!

コマンドレット実行前に確認を求めるConfirmパラメータ

ファイル名の変更は一度実行してしまうと元に戻すのに苦労する場合があるので、慎重を期す必要があります。その時に重宝するのがConfirmパラメータです。

Confirmパラメータをつけると、実行前に変更内容を確認することができます。

Rename-Item -NewName{元のファイル名 -Replace ‘置換対象の文字列’,’置換後の文字列’} -Confirm

一番後ろに「-Confirm」をつけるだけでOKです。

スクリプトを実行するとダイアログが表示されます。

「変更先」で正しくファイル名が変更されているのを確認します。

各ボタンのクリック時の動作は以下の通りです。

  • 「はい」 処理が実行され、以降も1ファイル毎にダイアログが表示
  • 「すべて続行」 ダイアログは表示されず、すべての処理が実行
  • 「いいえ」 処理は実行されず、以降も1ファイル毎にダイアログが表示
  • 「すべて無視」 処理が実行されず、スクリプトが終了
  • 「中断」 スクリプトが中断

中断だけ少し特殊なので説明しておきます。中断するとコンソールの入力値を示す「>」のマーク=プロンプトが1つ増えます。

これは中断しているスクリプトがあることを示します。

コンソールで「exit」というコマンドを入力してEnterを押すと

再びダイアログが表示され、処理が再開します。

変更する前に結果を確認するWhatIfパラメータ

Confirmパラメータと似ているのですが、実行前にファイル変更の内容を一気に確認できるWhatIfパラメータがあります。

Rename-Item -NewName{元のファイル名 -Replace ‘置換対象の文字列’,’置換後の文字列’} -Whatif

一番後ろに「-Whatif」をつけるだけでOKです。

スクリプトを実行するとコンソールに以下のようなメッセージが表示されます。

Confirmパラメータで表示されたダイアログと同じ内容のメッセージが表示されます

処理は実行されませんので、落ち着いて変更内容を確認することができます。

まとめ

いかがだったでしょうか。

今回はRename-Itemというコマンドレットを使ってファイル名を変更する方法をご紹介しました。

Get-ChildItemと組み合わせると複数ファイルの名称を変更することができます。またConfirmパラメータ、Whatifパラメータを使えば実行前に変更内容を確認することができます。

次回はRename-Itemと正規表現という手法を組み合わせることで、ファイル名により複雑な変更を加える方法をご紹介いたします!

最後までお読みいただきありがとうございました!

連載目次:Windowsのポチポチ業務を爆速化するPowerShell

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
  1. Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
  2. Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
  3. Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
  4. Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
  5. Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
  6. Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
  7. Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
  8. Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
  9. Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法
  10. Windowsのポチポチ業務を爆速化するPowerShell、ForEach-Objectで配列の全要素を処理する方法
  11. Windowsのポチポチ業務を爆速化するPowerShell、パイプラインを使いコマンドレット間で値を引き渡す方法
  12. Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
  13. Windowsのポチポチ業務を爆速化するPowerShell、ファイル名を変更する方法
  14. Windowsのポチポチ業務を爆速化するPowerShell、正規表現で複雑なファイル名変更をする方法
  15. Windowsのポチポチ業務を爆速化するPowerShell、タスクスケジューラでスクリプトを決まった日時に起動する方法
  16. Windowsのポチポチ業務を爆速化するPowerShell、ファイルをバックアップするスクリプトの作り方
  17. Windowsのポチポチ業務を爆速化するPowerShell、関数を作ってスクリプトから呼び出す方法
  18. Windowsのポチポチ業務を爆速化するPowerShell、関数をコンソールで登録して呼び出す方法
  19. Windowsのポチポチ業務を爆速化するPowerShell、短いワードでサッと関数を呼び出すエイリアスの使い方
  20. Windowsのポチポチ業務を爆速化するPowerShell、関数やエイリアス保存場所のドライブを紹介します
  21. Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法
  22. Windowsのポチポチ業務を爆速化するPowerShell、日付を操るDatetime型

  投稿者プロフィール

teradoshプログラミングする福祉職
システムエンジニアとして5年勤務した後、高齢者デイサービスで4年間働いた異色の経歴(学生時代は水泳コーチ)。1986年生まれ。大阪府豊中市在住。2女の父。

プログラミングの経験を活かし、福祉現場の業務効率化に情熱を燃やしています!

お気軽にフォローしてくださいね。

コメント

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