0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSLからWindowsのフォルダへカンタンに一発で移動するコマンドを作ってみた

0
Last updated at Posted at 2026-09-29

株式会社パレットリンクの@BaspisKawaEです。
今回は、Windowsのエクスプローラーで開いているフォルダへ、WSLから簡単に移動する方法について解説します。
よろしくお願いします!

対象読者: WindowsとWSLを行き来しながら作業している方
前提知識: WSLで基本的なLinuxコマンドを実行できる程度
この記事で学べること: エクスプローラーでコピーしたWindowsのパスを、WSL用へ自動変換して cd する方法

目次

  1. 背景:WindowsとWSLでパスが違う
  2. 完成後の使い方
  3. 再現方法
  4. cdc の中身
    1. クリップボードを読み取る
    2. 引用符の有無を吸収する
    3. WindowsのパスをWSL用へ変換する
    4. 変換先へ移動する

1. 背景:WindowsとWSLでパスが違う

WSLを使っていると、

「エクスプローラーでは目的のフォルダを開いているのに、WSLでも同じ場所まで移動するのが面倒」

ということがあります。

たとえばWindows側では次のようなパスだったとします。

C:\Users\username\Documents\project

しかし同じ場所をWSLから見ると、

/mnt/c/Users/username/Documents/project

となります。

Windowsでは C:\...、WSLでは /mnt/c/... と、同じフォルダでもパスの書き方が異なります。

もちろん、

cd /mnt/c/Users/username/Documents/project

と入力すれば移動できます。

しかし、エクスプローラーですでに目的のフォルダを見つけているのに、WSL側で改めて長いパスを入力するのはあまりにも面倒です。
こういう所は自動化して怠けてなんぼだと思っています。

そこで今回は、

エクスプローラーでパスをコピー → WSLで短いコマンドを打つ

だけでそのフォルダへ移動できるようにしてみます。
次の章で完成形のイメージを先にお話してから、再現方法の手順解説に入っていきます。

2. 完成後の使い方

最終的な操作はとても単純です。(それが目的なので当たり前ですが)

Step 1: エクスプローラーでフォルダを選択

WSLから移動したいフォルダをWindowsのエクスプローラーで選択します。

image.png

Step 2: Ctrl + Shift + C

その状態で、

Ctrl + Shift + C

を押します。

Windows 11ではバージョン22H2から Ctrl + Shift + C が「パスのコピー」のショートカットとして追加されています1。

Windows 10には Ctrl + Shift + C の「パスのコピー」ショートカットはありません。
対象を選択して Shiftを押しながら右クリック →「パスのコピー」 を使います2。

Step 3: WSLで cdc

WSLへ戻り、

cdc

と入力します。

これだけで、

/mnt/c/Users/username/Documents/project

へ移動します。

image.png

普段の操作はこれだけです。わあ便利。

エクスプローラーでフォルダを選択
        ↓
Ctrl + Shift + C
        ↓
WSLで cdc

3. 再現方法

まずWSLで .bashrc を開きます。

nano ~/.bashrc

ファイルの末尾に次の関数を追加します。

cdc() {
    local p
    p="$(powershell.exe -NoProfile -Command '[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; [Console]::Write((Get-Clipboard -Raw))')"

    p="${p#\"}"
    p="${p%\"}"

    cd -- "$(wslpath -u "$p")"
}

保存したら設定を読み直します。

source ~/.bashrc

これで cdc が使えるようになります。

確認する場合は、

type cdc

を実行します。

正しく登録されていれば、cdc is a function のように表示されます。

image.png

4. cdc の中身

登録した関数は次の処理をまとめています。

4-1. クリップボードを読み取る

まず次の部分です。

powershell.exe -NoProfile -Command '[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; [Console]::Write((Get-Clipboard -Raw))'

WSLからWindows側のPowerShellを呼び出し、Get-Clipboard -Raw でクリップボードの内容を1つの文字列として取得しています3。

また、

[Console]::OutputEncoding=[System.Text.Encoding]::UTF8

を指定して日本語を含むパスをUTF-8でWSL側へ渡します。

ここでは通常のPowerShell出力をそのまま使わず、

[Console]::Write(...)

で標準出力へ直接書き込んでいます。

PowerShellなどWindows側のコマンド出力では、行末がCRLFになる場合があります。
Bashの $(...) は末尾のLFを取り除きますが、CRまで必ず取り除くわけではありません4。
そのため、後から tr -d '\r\n' で削るのではなく、最初から行終端を付けずに出力する形にしています。

4-2. 引用符の有無を吸収する

本記事の確認環境では Ctrl + Shift + C でコピーした場合、クリップボードには次のような文字列が入りました。

C:\Users\username\Documents\project

一方エクスプローラーのGUIから「パスのコピー」を実行した場合は、次のように前後へ " が付くことを確認しました。

"C:\Users\username\Documents\project"

操作方法や環境によって引用符の有無が変わる可能性があるため、念のため次の処理を入れています。

p="${p#\"}"
p="${p%\"}"

前後に " があれば取り除き、付いていなければ何もしません。

今回の使い方では Ctrl + Shift + C を前提にしていますが、この処理を残しておけばGUIからコピーしたパスを使った場合にもそのまま動かせます。

4-3. WindowsのパスをWSL用へ変換する

Windows形式のパスをWSL形式へ変換するために、wslpath を使います。

wslpath -u "$p"

たとえば、

C:\Users\username\Documents

を渡すと、

/mnt/c/Users/username/Documents

へ変換されます。

wslpath は、WSL内でWindows形式とLinux形式のパスを変換するためのコマンドです5。

今回の -u は、Windows形式のパスをWSL形式へ変換する指定です。
なお、この方向への変換は wslpath の既定動作でもあります。

4-4. 変換先へ移動する

最後に、

cd -- "$(wslpath -u "$p")"

で、変換後のフォルダへ移動します。

つまり cdc の役割をまとめると、

  1. Windowsのクリップボードを読む
  2. 日本語をUTF-8で、余分な行終端を付けずに受け取る
  3. 前後に " があれば取り除く
  4. WindowsのパスをWSL形式へ変換する
  5. そのフォルダへ cd する

という流れになります。

まとめ

  • WindowsとWSLでは、同じフォルダでもパスの書き方が異なる
  • Windows 11 22H2以降では Ctrl + Shift + C で選択項目のパスをコピーできる
  • Windows 10では Shift + 右クリックから「パスのコピー」を使う
  • コピーされたパスは環境や操作の違いによって引用符の有無が異なるため、cdc 側で両方に対応させる
  • wslpath を使うとWindowsのパスをWSL形式へ変換できる
  • .bashrc に cdc を登録しておけば、クリップボードのフォルダへ cdc だけで移動できる

長々と中身を解説しましたが、普段の操作は

だけです。

WSLとWindowsのエクスプローラーを行き来する機会が多い場合、長い /mnt/c/... や /mnt/d/... を毎回入力する必要がなくなります。

是非導入してみてください。

パレットリンクでは、日々のつながりや学びを大切にしながら、さまざまなお役立ち記事をお届けしています。よろしければ、ぜひ「Organization」のページもご覧ください。
また、私たちと一緒に未来をつくっていく仲間も募集中です。ご興味をお持ちの方は、ぜひお気軽にお問い合わせください。一緒に新しいご縁が生まれることを楽しみにしています。

  1. 窓の杜「Windows 11 2022 Update」のエクスプローラー解説。Windows 11 バージョン22H2で Ctrl + Shift + C が「パスのコピー」に割り当てられたことが紹介されている。https://forest.watch.impress.co.jp/docs/shseri/win1122h2/1442873.html ↩

  2. Microsoft Q&Aでも、Windows 10では Shiftを押しながら右クリックすると「Copy as Path」が利用できると案内されている。https://learn.microsoft.com/en-us/answers/questions/3910053/copy-as-path ↩

  3. Microsoft Learn「Get-Clipboard」。-Raw を使うと、複数行のクリップボード内容も文字列配列ではなく1つの文字列として取得できる。Windows PowerShell 5.1でも利用可能。https://learn.microsoft.com/ja-jp/powershell/module/Microsoft.PowerShell.Management/Get-Clipboard?view=powershell-5.1 ↩

  4. GNU Bash Reference Manual「Command Substitution」。$(...) では標準出力末尾の newline が削除される。WindowsコマンドからCRLFが返る場合、LFだけが削除されCRが残るケースがあるため、本記事ではPowerShell側で行終端を付けずに出力している。https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html ↩

  5. Microsoft Learn「WSL の相互運用性 — Windows と Linux の連携」では、wslpath "C:\Users\username\file.txt" を /mnt/c/Users/username/file.txt へ変換する例が掲載されている。https://learn.microsoft.com/ja-jp/windows/dev-environment/wsl-interop ↩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?