PowerShellを使ったファイル・ディレクトリ操作の基本と応用

PowerShellは、Windows上でさまざまなタスクを自動化したり、効率的に管理するために使用される強力なスクリプト言語およびシェルです。

特に、ファイルやディレクトリの操作は日常的なタスクであり、PowerShellを使うことでこれらの操作を迅速かつ柔軟に行うことができます。

本記事では、PowerShellを使ってファイルやディレクトリを管理する基本的なコマンドの使い方から応用までを詳しく解説します。

PowerShellとは?

PowerShellは、Microsoftによって開発されたコマンドラインシェルおよびスクリプト言語です。

Windows環境でシステムの管理やタスクの自動化を行うためのツールとして広く利用されています。

従来のWindowsコマンドプロンプト(cmd.exe)とは異なり、PowerShellはオブジェクト指向であり、操作する情報がオブジェクトとして扱われます。

このため、より高度で複雑な処理が可能になります。


基本的なファイル操作コマンド

PowerShellを使ってファイル操作を行う場合、以下のような基本コマンドを利用します。

ファイルの作成

PowerShellでは、New-Item コマンドを使って新しいファイルを作成できます。

たとえば、現在のディレクトリに「test.txt」というテキストファイルを作成するには、以下のようにコマンドを実行します。

New-Item -Path . -Name "test.txt" -ItemType "File"

ファイルの読み込み

ファイルの内容を表示する場合は、Get-Content コマンドを使用します。

たとえば、先ほど作成した「test.txt」の内容を読み込むには、次のコマンドを実行します。

Get-Content -Path .\test.txt

ファイルの書き込み

既存のファイルにテキストを書き込むには、Set-Content コマンドを使用します。

例えば、「test.txt」に「Hello, PowerShell!」というテキストを書き込むには、以下のコマンドを実行します。

Set-Content -Path .\test.txt -Value "Hello, PowerShell!"

ファイルの追記

既存のファイルに追加で内容を追記するには、Add-Content コマンドを使用します。

例えば、「test.txt」に新しい行を追加するには、以下のようにします。

Add-Content -Path .\test.txt -Value "This is a new line."

ファイルの削除

ファイルを削除するには、Remove-Item コマンドを使用します。

たとえば、「test.txt」を削除するには、次のコマンドを実行します。

Remove-Item -Path .\test.txt

基本的なディレクトリ操作コマンド

次に、ディレクトリ(フォルダ)の操作を行う基本コマンドを紹介します。

ディレクトリの作成

新しいディレクトリを作成するには、New-Item コマンドを使用します。

たとえば、「TestFolder」という名前のフォルダを作成するには、以下のようにします。

New-Item -Path . -Name "TestFolder" -ItemType "Directory"

ディレクトリの内容の表示

特定のディレクトリ内のファイルやフォルダを表示するには、Get-ChildItem コマンドを使用します。

例えば、現在のディレクトリ内の内容を確認するには、以下のコマンドを実行します。

Get-ChildItem -Path .

ディレクトリの移動

ディレクトリを移動するには、Set-Location コマンドを使用します。

例えば、「TestFolder」ディレクトリに移動するには、以下のコマンドを実行します。

Set-Location -Path .\TestFolder

ディレクトリの削除

ディレクトリを削除するには、Remove-Item コマンドを使います。

空のフォルダであればそのまま削除できますが、内容があるフォルダを削除する場合は、-Recurse オプションを追加する必要があります。

Remove-Item -Path .\TestFolder -Recurse

応用的なファイル操作

ここでは、基本的な操作の応用編として、少し高度なファイル操作を紹介します。

ファイルのコピー

ファイルを別のディレクトリにコピーするには、Copy-Item コマンドを使用します。

たとえば、「C:\source\file.txt」を「C:\destination」にコピーするには、以下のようにします。

Copy-Item -Path "C:\source\file.txt" -Destination "C:\destination"

ファイルの移動

ファイルを移動するには、Move-Item コマンドを使用します。

例えば、「file.txt」を別のディレクトリに移動するには、以下のコマンドを使います。

Move-Item -Path "C:\source\file.txt" -Destination "C:\destination"

ファイルの検索

特定のディレクトリ内で条件に一致するファイルを検索するには、Get-ChildItem コマンドを使い、-Filter-Recurse オプションを併用します。

たとえば、現在のディレクトリ内で拡張子が「.txt」のファイルを再帰的に検索するには、以下のコマンドを実行します。

Get-ChildItem -Path . -Recurse -Filter *.txt

ファイルの圧縮

PowerShellでは、Compress-Archive コマンドを使用してファイルやフォルダをZIP形式に圧縮できます。

たとえば、フォルダ「C:\source」を圧縮して「C:\archive.zip」に保存するには、以下のコマンドを使用します。

Compress-Archive -Path "C:\source" -DestinationPath "C:\archive.zip"

圧縮ファイルの解凍

圧縮されたZIPファイルを解凍するには、Expand-Archive コマンドを使用します。

例えば、「C:\archive.zip」を「C:\destination」フォルダに解凍するには、以下のようにします。

Expand-Archive -Path "C:\archive.zip" -DestinationPath "C:\destination"

PowerShellスクリプトでのファイル操作の自動化

PowerShellでは、これまで紹介したファイルやディレクトリの操作をスクリプトとして自動化することが可能です。

たとえば、指定したディレクトリ内の古いファイルを定期的に削除するスクリプトを作成することで、ディスク容量を効率的に管理することができます。

以下は、30日以上前に作成されたファイルを自動的に削除するスクリプトの例です。

$folderPath = "C:\path\to\folder"
$files = Get-ChildItem -Path $folderPath | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-30) }

foreach ($file in $files) {
    Remove-Item -Path $file.FullName
}

このスクリプトは、指定したフォルダ内で30日以上前に作成されたすべてのファイルを検索し、それらを削除します。


演習問題

問題 1: ファイル操作の基本

次の手順に従って、PowerShellを使った基本的なファイル操作を実行してください。

  1. 「Documents」フォルダに「example.txt」という名前のファイルを作成してください。
  2. 「example.txt」に「Hello, PowerShell」というテキストを追加してください。
  3. 作成したファイルを「backup」フォルダにコピーしてください。
  4. 元の「example.txt」ファイルを削除してください。
解答例
# 1. ファイルの作成
New-Item -Path "$env:USERPROFILE\Documents" -Name "example.txt" -ItemType "File"

# 2. ファイルにテキストを書き込む
Set-Content -Path "$env:USERPROFILE\Documents\example.txt" -Value "Hello, PowerShell"

# 3. ファイルのコピー
Copy-Item -Path "$env:USERPROFILE\Documents\example.txt" -Destination "$env:USERPROFILE\Documents\backup"

# 4. 元のファイルを削除
Remove-Item -Path "$env:USERPROFILE\Documents\example.txt"

問題 2: ディレクトリ操作の基本

次の手順に従って、ディレクトリ操作を行ってください。

  1. 「Projects」というフォルダを作成してください。
  2. 「Projects」フォルダ内に「Test1」「Test2」というサブフォルダを作成してください。
  3. 「Test1」フォルダに移動し、そこに「log.txt」というファイルを作成してください。
  4. 「Projects」フォルダ全体を「Archive」という名前でZIP圧縮してください。
解答例
# 1. フォルダの作成
New-Item -Path "$env:USERPROFILE\Documents" -Name "Projects" -ItemType "Directory"

# 2. サブフォルダの作成
New-Item -Path "$env:USERPROFILE\Documents\Projects" -Name "Test1" -ItemType "Directory"
New-Item -Path "$env:USERPROFILE\Documents\Projects" -Name "Test2" -ItemType "Directory"

# 3. "Test1" フォルダに移動してファイルを作成
Set-Location -Path "$env:USERPROFILE\Documents\Projects\Test1"
New-Item -Name "log.txt" -ItemType "File"

# 4. フォルダのZIP圧縮
Compress-Archive -Path "$env:USERPROFILE\Documents\Projects" -DestinationPath "$env:USERPROFILE\Documents\Archive.zip"

まとめ

PowerShellを使ったファイルおよびディレクトリ操作は、非常に効率的で柔軟な方法です。

基本的なコマンドから応用的な操作まで幅広くサポートされており、これらを活用することで、日常の業務やシステム管理が大幅に簡素化されます。