Claude Codeをいつも対話で使っているなら、「質問を打ち込んで回答を待って、また打ち込んで…」の繰り返しに慣れているはずだ。実はPowerShellに1行打つだけで、要約でも判定でも整形でも、結果だけをさっと受け取れる。基本から順に見ていこう。
対話とワンショット、何が違う?
普段の使い方を思い出してみる。PowerShellでclaudeと打つと、入力欄が出て質問→回答→追加質問…と続く。これが対話モードだ。
もう一つの使い方がclaude -p(ワンショットモード)だ。-pは--printの略で、1回だけ指示を渡して結果を出力して終わる。入力欄は出ず、PowerShellのプロンプト(PS C:\>)に直接結果が表示される。
一番の違いは「文脈を引き継がない」こと。対話モードでは前の質問を覚えているが、ワンショットは毎回まっさらな状態で始まる。だからこそ、1回で終わる作業に向いている。
あるある話:対話モードで作業が終わった後、「終了」と打つのを忘れてセッションが残ってしまうことがある。ワンショットならその心配がない。結果が出たら勝手に終わる。
始める前に:CLIが使える状態か確認する
この記事はターミナル(PowerShell)での操作を前提にしている。始める前に2点だけ確認しておく。
前提条件
– Claude CodeのCLIがインストール済みであること
– PowerShellでclaudeコマンドが認識されること
確認はPowerShellで次のコマンドを打つだけだ。
claude --version
バージョン番号が表示されれば準備OK。もし「コマンドが見つかりません」的なエラーが出る場合は、CLIのインストールがまだ。インストール手順はClaude CodeをWindowsにインストールする手順を参照してほしい。
まずは1行打ってみる
PowerShellを開いて、次のコマンドをそのまま打ってみる。
claude -p "おはようを丁寧な日本語で言い換えて"
数秒待つと、結果がそのままPowerShell上に表示されるはずだ。「おはようございます」のような丁寧な表現が返ってくれば成功。
対話モードのような入力欄は出ない。実行して、結果が返ったら、その場で終わりだ。この「結果だけもらって終わる」という感覚がワンショットの核心。
よくある失敗:ダブルクォーテーションの閉じ忘れ
claude -p "おはようを丁寧な日本語で言い換えて
こんな風に末尾の"を忘れると、PowerShellが入力の終わりを認識できずに変な状態になる。もし「プロンプトが>>になった」などの症状が出たら、Ctrl + Cでキャンセルして打ち直せばいい。初歩的だけど、慣れるまでよくやるミスだ。
ワンショットが向く場面、向かない場面
どんな時にclaude -pを使うべきか、ざっくり整理しておく。
向いている場面
– テキストの要約:長い文章を短くまとめる
– 言い換え:表現を丁寧に、またはカジュアルに変える
– 分類・判定:OK/NG、カテゴリ分けなど
– 箇条書き化:文章を箇条書きに整形する
– フォーマット統一:バラバラの書式を揃える
– 既存文章のリライト:文章のリライトなど
向いていない場面
– 結果を見て「ここを直して」と追加指示したい時
– 何度もやり取りしながら調整したい時
判断の目安はシンプルだ。1回の指示で終わるならclaude -p、返答を見てからあれこれ直したいなら対話モード。
実務的なコツ:まずは短いテキストで成功を確認してから、長いテキストに挑むと安心だ。いきなり長文を投げると、結果が空だったりエラーが出たりした時に原因が分かりにくい。エラーが出た場合はプログラムのエラー修正の記事も参考にしてほしい。
ファイルの中身を1行で処理する
ここからはファイル処理に入る。テキストファイルの中身をclaude -pに渡して処理させる。
PowerShellではGet-Contentでファイルを読み、|(パイプ)で次のコマンドに渡す。パイプは「前の結果を次に送る」というPowerShellの基本機能だ。
例として、デスクトップにmeeting.txtという議事録のファイルがあるとする。
Get-Content .\meeting.txt | claude -p "3行で要約して"
議事録の内容がパイプを通ってclaude -pに渡り、3行の要約が返ってくる。
別の例。ログファイルからエラー行だけ抜き出すならこうだ。
Get-Content .\log.txt | claude -p "エラーらしい行だけ抜き出して"
ファイルパスの間違いに注意
Get-Contentで存在しないファイルを指定すると、PowerShell上にエラーが表示されるか、Claude側に何も渡らない状態になる。「何も返ってこない」「ファイルが見つからない」と思ったら、まずファイルのパスを確認すること。PowerShellでlsを打って、そのファイルが本当にその場所にあるか確かめるのが確実だ。
判定結果をJSONでもらって次に渡す
claude -pには--output-format jsonというオプションがある。これは、Claude Codeの実行結果をJSON形式で受け取りたい時に使う指定だ。
例えば、レビュー文の感情判定をしてみる。
Get-Content .\review.txt | claude -p "このレビューの感情をpositive/negative/neutralで判定して" --output-format json
結果はJSONで返ってくる。以下は「Claudeにこの形で返して」と指示した場合の出力例だ。
{"sentiment": "positive", "confidence": 0.9}
この結果をファイルに保存したければ、リダイレクト(>)を使う。
Get-Content .\review.txt | claude -p "このレビューの感情をpositive/negative/neutralで判定して" --output-format json > result.json
result.jsonというファイルが作られ、中に判定結果が保存される。
文字化けに注意
JSON出力で文字化けが起きることがある。PowerShellのエンコーディング設定とファイルの文字コードが揃っていないのが原因だ。基本はUTF-8に揃えておくのが安心。ファイルの文字コードが分からない場合は、PowerShellでエンコーディングを明示的に指定する手もある。
[System.IO.File]::ReadAllText(".\review.txt", [System.Text.Encoding]::UTF8) | claude -p "感情を判定して" --output-format json
コードブロックで囲むことで、PowerShellへのコピペがやりやすくなる。
よくあるつまずきポイントと対処法
claude -pを使っていて出会いやすい問題と、それぞれの対処をまとめる。
claudeコマンドが認識されない
CLIのインストールが完了していないか、PowerShellを開き直していない可能性がある。PowerShellを一度閉じて開き直してからclaude --versionで確認する。
エラーになる("の閉じ忘れ、全角スペース)
ダブルクォーテーションの閉じ忘れは先ほど触れた通り。もう一つ気をつけたいのが全角スペース。コマンドの中に全角スペースが混じっていると、PowerShellが正しく認識しない。日本語キーボードでは無変換でスペースを打つと全角になりやすい。
結果が空になる
パイプの前のコマンド(Get-Contentなど)がちゃんと内容を出しているか確認する。まずGet-Content .\file.txtだけを単独で実行して、中身が表示されるか確かめること。
文字化けする
ファイルの文字コード(UTF-8推奨)とPowerShell側の表示設定を確認する。PowerShellで[Console]::OutputEncodingを打つと現在のエンコーディングが分かる。
長文でうまくいかない
短いテキストで成功を確認してから、少しずつ長くしていく。一気に長文を渡すとトークン制限に引っかかることがある。
JSONが崩れる
出力をファイルに保存してテキストエディタで開くと、PowerShellの表示上は崩れていても正しいJSONになっていることがある。まずはファイル保存して中身を確認してみる。
最後に:できることの整理
claude -pは対話なしで1回だけ結果を出すコマンドだ。PowerShellに1行打てば、要約でも判定でも整形でも結果が返ってくる。
パイプと組み合わせるとファイルの中身をそのまま処理できる。Get-Contentで読んで| claude -pに渡すだけ。さらに--output-format jsonを使えば、判定結果をJSONで受け取って別のプログラムに渡すことも可能だ。
より高度なテキスト整形が必要な場合は、対話モードでの作業も検討してほしい。
試す順番としては、1行のコマンドで簡単な質問を投げて動きを確かめる。慣れてきたらファイル処理に進み、必要ならJSON出力へ。段階的に進めれば、どこでつまずいても原因が特定しやすい。
関連記事
– CC-002:Claude Codeのインストール手順(CLIがまだ入っていない場合)
– CC-059:モデルの切り替え方法(別のモデルで試したい場合)
まとめ
コマンド1行で結果がもらえるclaude -p。短いテキストの要約なら試す敷居は低い。手元のテキストファイルを1つ用意して、Get-Content | claude -p "要約して"を試してみるのが一番早い。
