【初心者向け】PowerShellのSet-Locationコマンド徹底解説|フォルダ移動の基本と応用技

Windows

PowerShellで作業していると、
「特定のフォルダに移動したい」
「毎回長いパスを入力するのが面倒」
と感じることはありませんか?

そんなときに使えるのが、ディレクトリ(カレントディレクトリ)を移動するための基本コマンド、Set-Locationです。

この記事では、PowerShellにおけるSet-Location基本的な使い方からショートカット、応用技、エラー対処法までを、初心者でもわかりやすく解説します。

日常の作業効率がグッと上がる「フォルダ移動」のテクニックを身につけましょう!

スポンサーリンク

Set-Locationとは?

Set-Locationは、現在の作業ディレクトリ(カレントディレクトリ)を変更するPowerShellの基本コマンドレットです。

これは他のシェルでいうところの cd コマンドに相当します。

Set-Location パス

このコマンドで、PowerShellの現在位置を別のディレクトリへ移動できます。

カレントディレクトリを変更することで、相対パスでのファイル操作が容易になり、長いパス名の入力も省略できるようになります。

現在の場所の確認方法

移動前後に現在の場所を確認するには:

Get-Location

または、そのエイリアス:

pwd

を使用します。

基本的な使い方|カレントディレクトリの変更

例:Cドライブの直下に移動

Set-Location C:\

例:ユーザーのドキュメントフォルダに移動

Set-Location "C:\Users\ユーザー名\Documents"

スペースがある場合はダブルクオーテーションで囲むのがポイントです。

例:ドライブ間の移動

Set-Location D:\

PowerShellでは、ドライブ文字を変えるだけでドライブ間の移動が可能です。

例:ホームディレクトリに移動

Set-Location ~

チルダ(~)記号を使用すると、ユーザーのホームディレクトリに移動できます(PowerShell 6.0以降)。

cdとの違いとエイリアス関係

実は、PowerShellでは以下のように短縮形でも使えます:

cd C:\Program Files

これは、cdSet-Location のエイリアスとして登録されているからです。

エイリアスの確認方法:

Get-Alias cd

出力結果:

CommandType    Name    Definition
-----------    ----    ----------
Alias          cd      Set-Location

つまり、cdSet-Location も同じ意味なので、用途に応じて使い分けが可能です。

よく使われる他のエイリアス

Get-Alias | Where-Object {$_.Definition -eq "Set-Location"}

この結果、以下のエイリアスが表示されます:

  • cd – 最も一般的
  • chdir – 互換性のため
  • sl – 短縮形

これらはすべて同じSet-Locationコマンドレットを呼び出します。

相対パス・絶対パスの使い分け

相対パス

現在のディレクトリから見たパス指定。

Set-Location ..    # 1つ上のディレクトリへ
Set-Location .\subfolder    # 現在のフォルダ内のsubfolderへ
Set-Location ..\sibling    # 親フォルダにある別のフォルダへ

現在のディレクトリは「.(ピリオド)」、1つ上のディレクトリは「..(ダブルピリオド)」。

絶対パス

ドライブから始まる完全なパス指定。

Set-Location "C:\Users\Public"

スクリプトやバッチ処理では絶対パスの方がミスが少ないため、使い分けが重要です。

特に自動化スクリプトでは、実行環境に依存しないよう絶対パスを使用することが推奨されます。

パスを楽に入力する方法

PowerShellでは、タブ補完を使用してパスを効率的に入力できます:

Set-Location C:\Pro[Tab]

[Tab]キーを押すと、C:\Program Filesのように補完されます。続けて押すと、C:\Program Files (x86)など他の候補も表示されます。

特殊フォルダへの移動方法

PowerShellではプロバイダーごとに名前空間を持っているため、以下のような「論理的な場所」にも移動できます。

例:環境変数ドライブ

Set-Location env:
Get-ChildItem   # 環境変数の一覧を表示

例:レジストリに移動

Set-Location HKLM:\Software

例:証明書ストアに移動

Set-Location Cert:\CurrentUser

こうした使い方ができるのは、PowerShellの強みのひとつです。

ファイルシステム以外のデータストアも統一的に扱える特性を活かし、多様な操作が可能になります。

プロバイダーの一覧を確認

Get-PSProvider

これにより、利用可能なすべてのプロバイダーを確認できます。

よくあるエラーと対処法

エラー内容原因・対策
Cannot find path指定したパスが間違っている、または存在しない。Test-Pathで事前確認を。
Access to the path is deniedアクセス権限がない場所に移動しようとしている。管理者モードで再実行。
パスの中にスペースがあると動かないパス全体を "ダブルクオーテーション" で囲む
Cannot find driveドライブレターが間違っているか、存在しないドライブを指定している。

エラーの具体的な対策

パスが存在するか事前確認:

if (Test-Path "C:\My Documents") {
    Set-Location "C:\My Documents"
} else {
    Write-Error "パスが存在しません!"
}

管理者権限が必要なフォルダに移動:

# PowerShellを管理者として再起動してから実行
Set-Location "C:\Windows\System32\config"

応用:スクリプトの中で動的に移動する方法

スクリプト実行時に動的にディレクトリを移動したい場合、以下のように変数と組み合わせて使えます。

$target = "C:\Logs"
if (Test-Path $target) {
    Set-Location $target
    # 処理を実行
    Get-ChildItem -Filter "*.log" | Sort-Object LastWriteTime -Descending
} else {
    Write-Output "指定のフォルダが見つかりませんでした。"
}

こうすることで、柔軟で安全なスクリプト構築が可能になります。

特定のフォルダに移動してから戻る

作業フォルダを一時的に変更し、処理後に元に戻す方法:

$original = Get-Location    # 現在の場所を保存
Set-Location "C:\Temp"      # 一時的に移動
# ここで処理を実行
Set-Location $original      # 元の場所に戻る

または、Push-LocationPop-Locationを使用する方法:

Push-Location "C:\Temp"    # 現在の場所をスタックに保存して移動
# ここで処理を実行
Pop-Location               # スタックからロケーションを取り出して戻る

これらの方法は、特にスクリプト内でさまざまなフォルダを行き来する必要がある場合に便利です。

便利な活用テクニック

環境変数を使ったパス指定

Set-Location $env:USERPROFILE    # ユーザープロファイルに移動
Set-Location $env:TEMP           # 一時フォルダに移動

最近使ったディレクトリを記憶・ジャンプする関数

PowerShellプロファイルに以下のような関数を追加しておくと便利です:

# PowerShellプロファイル($PROFILE)に追加
$global:dirHistory = @()

function Mark-Location {
    param([string]$name = "")
    if ($name -eq "") {
        $name = (Get-Location).Path
    }
    $global:dirHistory += (Get-Location).Path
    Write-Host "現在のディレクトリを記憶しました: $((Get-Location).Path)" -ForegroundColor Green
}

function Jump-Location {
    param([int]$index = -1)
    if ($index -ge 0 -and $index -lt $global:dirHistory.Count) {
        Set-Location $global:dirHistory[$index]
    } else {
        Write-Host "保存済みディレクトリ一覧:" -ForegroundColor Cyan
        for ($i = 0; $i -lt $global:dirHistory.Count; $i++) {
            Write-Host "$i : $($global:dirHistory[$i])" -ForegroundColor Yellow
        }
    }
}

Set-Alias mark Mark-Location
Set-Alias jump Jump-Location

これにより、markと入力すると現在のディレクトリを記憶し、jumpでこれまでに記憶したディレクトリの一覧が表示され、jump 0のように番号を指定することでジャンプできます。

まとめ

PowerShellのSet-Locationは、作業ディレクトリを変更する基本中の基本コマンドでありながら、非常に奥が深い機能です。

本日のポイントまとめ

  • Set-Locationはフォルダ移動に使う標準コマンド
  • cdはそのエイリアスなのでどちらでもOK
  • 相対パス・絶対パス・プロバイダー(env: や HKLM:)も活用できる
  • スクリプトでの応用も可能、エラー対処も押さえておこう
  • Push-LocationPop-Locationでディレクトリ移動履歴を管理できる
  • 環境変数を活用すれば、パスの入力が楽になる

PowerShellの効率的な利用において、ディレクトリの移動は基本中の基本です。

Set-Locationコマンドをマスターすることで、コマンドライン作業の効率が大幅に向上します。

特にスクリプトを書く際には、ファイルやフォルダの操作の前提となる重要な操作です。

毎日のPowerShell操作を快適にするために、ぜひSet-Locationをマスターしてみてください!

コマンドライン操作の基本を押さえることで、より高度な自動化や管理タスクへの道が開けるでしょう。

コメント

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