PowerShellを使っていて、
「別のフォルダに移動したいのにうまくいかない」
「cd
コマンドを打っても反応しない」
そんな悩みを持ったことはありませんか?
実は、PowerShellでのフォルダ移動コマンドは、Windowsの「コマンドプロンプト」と似ているようで少し違う点があります。
この記事では、PowerShellにおける「移動」に関するコマンドを初心者向けにわかりやすく紹介します。
PowerShellでの移動とは?基本概念を理解しよう

カレントディレクトリとは?
カレントディレクトリとは、現在PowerShellが作業している場所(フォルダ)のことです。
ファイル操作やコマンド実行は、基本的にこの場所を基準に行われます。
PowerShellプロンプトの見方
PS C:\Users\Taro>
表示の意味:
PS
:PowerShellを表すC:\Users\Taro
:現在いる場所(カレントディレクトリ)>
:コマンド入力待ち状態
移動する理由
効率的なファイル操作 目的のフォルダに移動してからファイル操作を行う
相対パスの活用 現在の場所を基準にした短いパス指定が可能
スクリプトの実行 特定のフォルダで実行する必要があるスクリプトの場合
ポイント: PowerShellでの移動操作を理解すれば、作業効率が大幅に向上します。
基本移動コマンド:Set-LocationとCD
Set-Locationコマンド(正式名称)
Set-Location C:\Users
特徴:
- PowerShell固有のコマンドレット
- 完全な機能を持つ
- パラメーターやスイッチが豊富
cdコマンド(エイリアス)
cd C:\Users
特徴:
Set-Location
の別名(エイリアス)- 短くて覚えやすい
- 従来のコマンドプロンプトユーザーに馴染み深い
どちらを使うべきか?
日常的な操作: cd
(短くて便利)
スクリプト内: Set-Location
(明確で読みやすい)
初心者: cd
から始めてOK
基本的な移動例
# ユーザーフォルダに移動
cd C:\Users
# ドキュメントフォルダに移動
cd C:\Users\$env:USERNAME\Documents
# ルートディレクトリに移動
cd C:\
絶対パスと相対パスの使い分け

絶対パス(フルパス)
定義: ドライブレターから始まる完全なパス
# 絶対パスの例
cd C:\Users\Taro\Documents
cd D:\Projects\WebApp
cd "C:\Program Files\Microsoft Office"
メリット:
- 現在の場所に関係なく確実に移動できる
- スクリプトで安全に使用できる
デメリット:
- 長くて入力が大変
- 環境によってパスが変わる場合がある
相対パス
定義: 現在の場所を基準とした相対的なパス
親フォルダに移動
cd ..
現在のフォルダ内のサブフォルダに移動
cd .\project
cd project # .\は省略可能
複数階層の移動
cd ..\.. # 2つ上の階層に移動
cd ..\Pictures # 1つ上に移動してからPicturesフォルダへ
cd .\folder1\folder2 # 現在の場所からfolder1/folder2へ
相対パスの特殊記号
記号 | 意味 | 使用例 |
---|---|---|
. | 現在のディレクトリ | cd .\subfolder |
.. | 親ディレクトリ | cd .. |
~ | ユーザーのホームディレクトリ | cd ~ |
実用例
# 現在地:C:\Users\Taro\Documents
cd .. # C:\Users\Taro に移動
cd .\Pictures # C:\Users\Taro\Pictures に移動
cd ..\Downloads # C:\Users\Taro\Downloads に移動
cd ~ # C:\Users\Taro に移動(ホームディレクトリ)
ドライブをまたぐ移動の注意点
ドライブ移動の基本
PowerShellでは、異なるドライブ間の移動に2つのステップが必要です。
ステップ1:ドライブの切り替え
D:
ステップ2:目的のフォルダに移動
cd D:\Work
一括移動の方法
方法1:Set-Locationの-Pathパラメーター
Set-Location -Path "D:\Work"
方法2:Push-LocationとPop-Location
Push-Location "D:\Work" # D:\Workに移動し、元の場所を記憶
# 作業を行う
Pop-Location # 元の場所に戻る
ドライブ移動の実用例
# 現在地:C:\Users\Taro
# 間違った方法(移動されない)
cd D:\Projects
Get-Location # まだC:\Users\Taroにいる
# 正しい方法1
D:
cd D:\Projects
Get-Location # D:\Projectsに移動
# 正しい方法2
Set-Location "D:\Projects"
Get-Location # D:\Projectsに移動
カレントディレクトリの確認方法
Get-Locationコマンド
Get-Location
エイリアス:
gl
pwd
(Print Working Directory)
# どれも同じ結果
Get-Location
gl
pwd
出力例
PS C:\Users\Taro> Get-Location
Path
----
C:\Users\Taro
プロンプトでの確認
PowerShellのプロンプト自体にもカレントディレクトリが表示されます:
PS C:\Users\Taro\Documents>
このC:\Users\Taro\Documents
が現在の場所です。
パスにスペースが含まれる場合の対処法

問題となるケース
# エラーになる例
cd C:\Program Files # スペースがあるとエラー
解決方法1:ダブルクォートで囲む
cd "C:\Program Files"
cd "C:\Users\Taro\My Documents"
cd 'C:\Program Files' # シングルクォートも可
解決方法2:タブ補完を活用
cd C:\Prog[Tab] # Tabキーを押すと自動補完される
PowerShellは自動的にクォートを付けて補完してくれます。
解決方法3:8.3形式の短縮名
cd C:\PROGRA~1 # Program Filesの短縮名
注意: この方法は推奨されません。可読性が悪く、環境によって名前が変わる可能性があります。
便利な移動テクニック
ドラッグ&ドロップを活用
- エクスプローラーでフォルダを開く
- フォルダをPowerShellウィンドウにドラッグ
- パスが自動的に入力される
cd "C:\Users\Taro\Desktop\Project" # ドラッグで自動入力
履歴を使った移動
最近訪れた場所に戻る
cd - # 直前にいた場所に戻る(一部の環境で利用可能)
Push-LocationとPop-Locationの活用
# 現在の場所を保存して移動
Push-Location "C:\Temp"
# 何らかの作業を実行
Get-ChildItem *.txt
# 元の場所に戻る
Pop-Location
環境変数を使った移動
# ユーザーディレクトリに移動
cd $env:USERPROFILE
# デスクトップに移動
cd "$env:USERPROFILE\Desktop"
# 一時フォルダに移動
cd $env:TEMP
# システムルートに移動
cd $env:SystemRoot
よく使う場所への関数作成
# プロファイルに関数を定義
function godesk { cd "$env:USERPROFILE\Desktop" }
function gotemp { cd $env:TEMP }
function godown { cd "$env:USERPROFILE\Downloads" }
# 使用例
godesk # デスクトップに移動
gotemp # 一時フォルダに移動
スクリプト内での移動処理
基本的なスクリプト例
# backup.ps1
$SourcePath = "C:\Important\Data"
$BackupPath = "D:\Backup"
# バックアップ先に移動
Set-Location $BackupPath
# 現在の日付でフォルダ作成
$Date = Get-Date -Format "yyyy-MM-dd"
New-Item -ItemType Directory -Name $Date -Force
# バックアップフォルダに移動してファイルコピー
Set-Location $Date
Copy-Item "$SourcePath\*" -Destination "." -Recurse
エラーハンドリング付きの移動
$TargetPath = "C:\Work\Project"
try {
if (Test-Path $TargetPath) {
Set-Location $TargetPath
Write-Host "移動成功: $TargetPath"
} else {
Write-Error "指定されたパスが存在しません: $TargetPath"
}
} catch {
Write-Error "移動中にエラーが発生しました: $($_.Exception.Message)"
}
作業前の場所を保存する方法
# 現在の場所を保存
$OriginalLocation = Get-Location
try {
# 作業フォルダに移動
Set-Location "C:\Temp"
# 何らかの作業を実行
Get-ChildItem *.log | Remove-Item
} finally {
# 必ず元の場所に戻る
Set-Location $OriginalLocation
}
よくあるエラーと対処法

エラー1:「パスが見つかりません」
cd C:\NonExistentFolder
# Set-Location : パス 'C:\NonExistentFolder' が存在しないため検出できません。
対処法:
# パスの存在確認
if (Test-Path "C:\SomeFolder") {
cd "C:\SomeFolder"
} else {
Write-Host "指定されたパスが存在しません"
}
エラー2:「アクセスが拒否されました」
cd "C:\System Volume Information"
# Set-Location : パス 'C:\System Volume Information' へのアクセスが拒否されました。
対処法:
- 管理者権限でPowerShellを起動
- アクセス権限のあるフォルダを指定
エラー3:ネットワークパスの問題
cd \\server\share
# エラーが発生する場合がある
対処法:
# UNCパスの場合はSet-Locationを使用
Set-Location "\\server\share"
# または、ネットワークドライブをマップ
New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\server\share"
cd Z:
エラー4:特殊文字を含むパス
cd C:\Folder[special] # 角括弧でエラー
対処法:
cd "C:\Folder[special]" # クォートで囲む
高度な移動テクニック
ワイルドカードを使った移動
# 最初に見つかった「Proj」で始まるフォルダに移動
cd .\Proj*
# ただし、複数該当する場合はエラーになるので注意
条件付き移動
# フォルダが存在する場合のみ移動
$folders = @("C:\ProjectA", "C:\ProjectB", "C:\ProjectC")
foreach ($folder in $folders) {
if (Test-Path $folder) {
Set-Location $folder
Write-Host "移動しました: $folder"
break
}
}
最近更新されたフォルダに移動
# 最近更新されたサブフォルダに移動
$LatestFolder = Get-ChildItem -Directory |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
if ($LatestFolder) {
cd $LatestFolder.FullName
Write-Host "最新フォルダに移動: $($LatestFolder.Name)"
}
パフォーマンスとベストプラクティス

効率的な移動のコツ
タブ補完を活用
cd C:\Us[Tab]\Ta[Tab]\Do[Tab] # 効率的に入力
エイリアスの活用
# よく使うパスにエイリアスを設定
Set-Alias -Name work -Value "Set-Location C:\Work"
work # C:\Workに移動
履歴の活用
# PowerShellの履歴機能
# ↑キーで過去のコマンドを呼び出し
スクリプトでのベストプラクティス
# 推奨される書き方
[CmdletBinding()]
param()
$ErrorActionPreference = "Stop"
$OriginalLocation = Get-Location
try {
# 作業ディレクトリに移動
$WorkDir = "C:\Scripts\Work"
if (-not (Test-Path $WorkDir)) {
New-Item -ItemType Directory -Path $WorkDir -Force
}
Set-Location $WorkDir
# メイン処理
# ...
} catch {
Write-Error "処理中にエラーが発生しました: $($_.Exception.Message)"
} finally {
# 必ず元の場所に戻る
Set-Location $OriginalLocation
}
よくある質問と答え
Q: cdとSet-Locationはどちらを使うべきですか?
A: 日常的な操作ではcd
、スクリプト内ではSet-Location
を推奨します。機能的には同じです。
Q: Linuxのcdコマンドとの違いはありますか?
A: 基本的な動作は同じですが、PowerShellは大文字小文字を区別しません。また、ドライブの概念があります。
Q: ネットワークフォルダに移動できません
A: UNCパス(\server\share)の場合、Set-Locationを使用するか、ネットワークドライブをマップしてください。
Q: 移動先のフォルダが存在しない場合は?
A: エラーが発生します。事前にTest-Pathで存在確認することを推奨します。
まとめ:移動コマンドをマスターして、PowerShell操作をスムーズに!
重要ポイントまとめ:
コマンド | 目的 | 使用例 | 補足 |
---|---|---|---|
cd または Set-Location | フォルダ移動 | cd C:\Users | 基本的な移動コマンド |
cd .. | 親フォルダに移動 | cd .. | 相対パスの代表例 |
cd "C:\Program Files" | スペース含むパス移動 | クォート必須 | エラー回避の基本 |
D: + cd D:\Folder | ドライブ移動 | 2ステップが必要 | PowerShell特有の注意点 |
Get-Location | 現在位置確認 | Get-Location | 作業位置の確認 |
使い分けのコツ:
- ✅ 日常操作:
cd
を使用(短くて便利) - ✅ スクリプト:
Set-Location
を使用(明確で読みやすい) - ✅ 絶対パス:確実だが長い
- ✅ 相対パス:効率的だが現在位置に依存
コメント