• こんにちは。そろそろ梅雨入りが近づいてきて、雨降りの日も増えたように感じます。

    台風も出始めたようで、天候に気を付けておきたいところですね。

    それはさておき、今回はPowerShellについて紹介させて頂きたいと思います。

PowerShellとは?

PowerShell は、コマンドライン シェル、スクリプト言語、および構成管理フレームワークで構成されるクロスプラットフォームのタスク自動化ソリューションです。

PowerShell は Windows、Linux、および macOS 上で実行されます。(Microsoft公式サイトより引用)

ちょっとどういうことか分かりにくいと思いますので、実行例を交えつつご紹介していきます。


PowerShellの使用方法

Windowsであれば標準搭載されているため特に事前準備は必要ありません。

macOSの方は別途インストールが必要ですが、今回は解説を省きます)

ファイルエクスプローラーを開き作業したいフォルダに移動し、アドレスバ ーにPowerShell と入力、Enterを押してください。

そうすると、現在のフォルダが指定された状態でPowerShellが開きます。

それでは、今回はこのフォルダでPowerShellを実行して、実行結果をお見せしていきたいと思います。



フォルダ内のファイル名を一覧表示

コマンド

Get-ChildItem

実行結果

document.docx
estimate.xlsx
image2.jpg
image.jpg
sample.txt

解説

Get-ChildItem : フォルダ内のファイルをすべて取得

-Name : ファイル名を取得するためのオプション


フォルダ内でファイルを検索

コマンド

Get-ChildItem -Filter "document.docx" -Name

実行結果

document.docx

解説

Get-ChildItem : フォルダ内のファイルをすべて取得

-Filter “document.docx” : document.docxを検索

-Name : ファイル名を取得するためのオプション

 

補足ですが、このように-Recurseをすると子孫のディレクトリ内を検索することもできます。

Get-ChildItem -Recurse -Filter "document.docx" -Name

 

テキストファイルの中身を検索

コマンド

Select-String -Path sample.txt -Pattern "Hello, PowerShell!"

実行結果

sample.txt:13:Hello, PowerShell!

解説

Select-String : 文字列を検索

-Path sample.txt : sample.txtファイル内を指定する

-Pattern “Hello, PowerShell!” : 検索する文字列パターン。“Hello, PowerShell!”という文字列を探す


ファイル名を一括変更

少し難易度が上がりますが、実作業で使えそうな内容でご説明します。

フォルダ内のファイル名すべてに_20240601と日時のサフィックスを付けていきます。

コマンド

Get-ChildItem -File | ForEach-Object {

    $extension = $_.Extension

    $newName = $_.BaseName + "_20240601" + $extension

    Rename-Item $_.FullName -NewName $newName

}

実行結果

解説

Get-ChildItem -File:現在のディレクトリにあるすべてのファイルを取得

ForEach-Object:取得した各ファイルに対して{ }内の操作を行います

$extension = $_.Extension:ファイルの拡張子を取得し、それを$extension変数に保存

$newName = $_.BaseName + “_20240601” + $extension :

ファイルの基本名(拡張子を除いた名前)に“_20240601”を追加し、その後に元の拡張子($extension)を追加して新しい名前($newName)を作成

Rename-Item $_.FullName : ファイルのフルパス名($_.FullName)を使用してファイルを指定

-NewName $newName : 新しい名前($newName)に変更する


  • 最後は変数なども扱っており、とっつきにくい内容だったかもしれません。

    どのようなことができるか、イメージいただければ幸いです。

    PowershellではOffice系のファイルも操作でき、非エンジニアの方でも作業自動化等に利用しやすいかと思います。

    ご興味のある方は一度簡単なコマンドからお試しください。

    ファイル名変更や削除の際はバックアップをお忘れなきようお願いします。