Claude CodeでWindowsのパスエラーを直す|空白・日本語・バックスラッシュの対処法

Claude CodeをWindowsで使うときのパスエラーを、空白、引用符、バックスラッシュ、日本語フォルダ、相対パスの順に切り分ける手順を解説します。

Claude Codeの「ファイルが見つからない」は、ファイルの欠落だけでなく、現在地やシェルごとのパス表記の違いでも起きます。まず現在地、使用シェル、渡したパスの順に確認します。起動方法はClaude Codeのはじめ方、対象フォルダの決め方はファイルを触らせる基本も参照してください。

Windowsで起きやすいパスエラー

同じ場所でも、シェルによって表記が変わります。

PowerShell: C:\Users\user\My Project
Git Bash:   /c/Users/user/My Project
WSL:        /mnt/c/Users/user/My Project

ネイティブWindows版のClaude Codeは、Git for WindowsがなければPowerShell、あればBashツールでGit Bashを使います。WSL版はWSL内で起動します。エラーに表示されたコマンドやプロンプトから、どのシェルで失敗したかを判断してください。

Get-Location
Test-Path -LiteralPath 'C:\Users\user\My Project'

Falseならドライブ文字、名前、階層を見直します。Trueならファイルは認識されているため、引用符とシェルの違いを調べます。

症状から原因を絞る早見表

症状主な確認箇所最初に試すこと
Test-PathFalseドライブ、階層、名前絶対パスをエクスプローラーから確認する
空白の手前までしか認識されない引用符パス全体を単一引用符で囲む
C:\...をGit Bashが扱えないシェルの表記/c/...へ書き換える
日本語だけ文字化けする文字コード、PowerShellの版$PSVersionTable.PSVersionと保存時の文字コードを確認する
相対パスだけ失敗する現在地Get-Locationまたはpwdで起点を確認する

空白を含むパスを引用する

PowerShellでは、空白を含む引数を引用符で囲みます。文字をそのまま扱うなら単一引用符、変数を展開するなら二重引用符です。

Set-Location -LiteralPath 'C:\Users\user\My Project'
Get-Content -LiteralPath "$env:USERPROFILE\My Project\README.md"

角括弧などを含む名前には、ワイルドカードとして解釈しない-LiteralPathが向きます。Claude Codeへは「対象はC:\Users\user\My Project。存在確認後に読む」と伝えます。指示文のバッククォートは、シェルの引用符の代わりにはなりません。

バックスラッシュを正しく扱う

PowerShellではバックスラッシュはエスケープ文字ではないため、単一引用符内で二重にしません。

Test-Path -LiteralPath 'C:\work\sample.txt'

JSON文字列へ書く場合は、バックスラッシュを二重にします。

{
  "env": {
    "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"
  }
}

Git BashではC:\work/c/workと書きます。Git for Windows公式情報でも、/c/C:\に相当します。

cd '/c/Users/user/My Project'
pwd

表記を一括置換せず、エラーを出したコマンドの構文に合わせます。

日本語フォルダの文字化けを切り分ける

日本語フォルダで失敗したら、表示だけが崩れたのか、別の文字列として渡されたのかを分けます。

Test-Path -LiteralPath 'C:\Users\user\資料\開発メモ'

Trueなら名前は認識されています。次に画面出力と保存ログを分けます。PowerShell 7系の出力は既定でBOMなしUTF-8ですが、Windows PowerShell 5.1の既定はコマンドレットごとに異なります。

Get-Content -LiteralPath '.\対象一覧.txt' -Encoding utf8

失敗が続く場合は、コマンド、PowerShellの版、入力パス、エラー全文を残します。改名は最後の手段にし、先に入出力の文字コードがUTF-8でそろっているかを確認してください。

相対パスと絶対パスを使い分ける

相対パスは移動に強い一方、現在地が違うと別の場所を指します。絶対パスは対象を固定できますが、環境をまたぐ再利用には不向きです。

Set-Location -LiteralPath 'C:\work\my-site'
Test-Path -LiteralPath '.\src\content\articles'
Resolve-Path -LiteralPath '.\src\content\articles'

C:\work\file.txtは絶対パスですが、C:work\file.txtはCドライブ上の現在地を基準にするドライブ相対パスです。調査中は絶対パスで対象を固定し、解決後はプロジェクト内の相対パスへ戻すと再利用しやすくなります。「Falseなら編集しない」と伝えると、別の場所を誤って触るリスクを下げられます。

再発を防ぐ確認項目

  1. Get-Locationまたはpwdで現在地とシェルを記録する
  2. 空白を引用符で囲み、PowerShellでは-LiteralPathを試す
  3. JSONは\\、Git Bashは/c/の表記に合わせる
  4. 日本語が崩れたら、画面表示と保存ログを分けて調べる
  5. 相対パスは起点を固定してから使う
  6. 修正後に対象を読み、別の場所を指していないか確かめる

現在地、絶対パス、存在確認、シェル、エラー全文を残します。依頼が長い場合は指示が長すぎる問題を参考に、対象、禁止事項、確認コマンド、完了条件へ絞ります。

よくある質問

Claude Codeで「No such file or directory」と出るのはなぜですか?

現在地の違い、空白を含むパスの引用漏れ、またはPowerShell・Git Bash・WSL間の表記違いが主な候補です。Get-Locationまたはpwdで現在地を確認し、絶対パスで存在確認してください。

Windowsのパスはバックスラッシュを2つ書く必要がありますか?

PowerShellの単一引用符内では通常1つです。JSON文字列では\がエスケープに使われるため、C:\\work\\file.txtのように2つ書きます。

空白のあるフォルダ名は変更したほうがよいですか?

すぐに変更する必要はありません。まずパス全体を引用符で囲み、PowerShellなら-LiteralPathを試します。外部ツールが空白に対応していないと確認できた場合に限り、影響範囲を調べて改名を検討します。

日本語ユーザー名が原因でClaude Codeを使えないことはありますか?

日本語を含むだけで直ちに使えないとは限りません。Test-Path -LiteralPathTrueならパス自体は認識されています。文字化けする場合はPowerShellの版と、読み書きするファイルの文字コードを切り分けます。

相対パスと絶対パスはどちらを使うべきですか?

原因調査中は対象を固定できる絶対パスが向きます。解決後の手順やプロジェクト内の指示では、現在地を明示したうえで相対パスを使うと別環境へ移しやすくなります。

一次情報の確認メモ

続き(結論と実データ)はnoteに置いています

ここでは手順のところまで書きました。実際に出た数字、うまくいかなかった条件、そのまま使える設定ファイルは、 note の記事にまとめてあります。

noteで続きを読む Xをフォローする