Programming Field

よくある質問 - DOS/コマンドプロンプト コマンド一覧

MS-DOSプロンプトやコマンドプロンプトにおけるよくある質問をまとめています。

※ コマンドプロンプトに比重を置いた内容となっています。

プロンプト全般

コマンドプロンプトはどうやって起動する?

楽な手順は、Windowsキーを押しながらRキーを押して「ファイル名を指定して実行」を開き、「cmd」を入力してOKする手順です。詳しくは → 「コマンドプロンプトはどうやって起動する?」

よく使うコマンドは?

ディレクトリを移動するCd(Chdir)コマンドや、CopyXcopyなどのファイルをコピーするコマンド、Md(Mkdir)Rd(Rmdir)などのディレクトリを操作するコマンドなどがよく使われます。基本的なコマンド一覧10選も合わせてご覧ください。

MS-DOSプロンプトはどうやって起動する?

楽な手順は、Windowsキーを押しながらRキーを押して「ファイル名を指定して実行」を開き、「command」を入力してOKする手順です。Windows 95/98/Meなら「スタート」→「プログラム」→「アクセサリ」→「MS-DOSプロンプト」で起動できます。

なお64ビット版Windowsでは起動できません。

コマンドプロンプトを管理者として実行するには?

スタートメニュー内にある「コマンドプロンプト」を右クリックしてサブメニューを開き、「管理者として実行」を選択します。詳しくは → 「コマンドプロンプトを管理者として実行するには?」

ディレクトリを移動するコマンドは?

Cd(Chdir)コマンドを使います。「cd directory」と入力してエンター(改行)します。詳しくは → Cd(Chdir)コマンド

ドライブを移動するコマンドは?

ドライブの移動はコマンドを使うのではなく、直接「x:」(xはドライブ文字)と入力してエンター(改行)します。詳しくは → プロンプトでのドライブ移動

ファイルの一覧を出すコマンドは?

Dirコマンドを使います。Treeコマンドでもツリー表示で一覧を出すことができます。詳しくは → 「ファイルの一覧を出すコマンドは?」

ファイルをコピーするコマンドは?

CopyXcopyRobocopyの3種類があります。詳しくは → 「ファイルをコピーするコマンドは?」

ファイルを削除するコマンドは?

Del(Erase)コマンドでファイルを削除することができます。ワイルドカードを使うと複数のファイルを削除することができます。

ディレクトリ(フォルダー)を削除するコマンドは?

Rd(Rmdir)コマンドを使います。中身があるディレクトリの場合は「/S」オプションを使います。(MS-DOSやWindows 95/98/Meの場合はDeltreeを使います。)

画面出力を消すには?

Clsコマンドを使います。

画面出力をコピーするには?

コマンドプロンプトで既に出力された内容をコピーするには、Ctrl+Mを押して(またはウィンドウ左上のメニューから「編集」→「範囲選択(マーク)」を選んで)選択モードにし、範囲をマウスで選択してEnterキーを押します。Windowsターミナルの場合はCtrl+Mを使わず、直接マウスで選択してからCtrl+Cでコピーします。

これから実行するコマンドの画面出力をコピーするには、Clipコマンドを使いパイプ「|」で出力を送ります。詳しくはClipコマンドのページをご覧ください。

ファイルを検索するには?

そのものずばりのコマンドはありませんが、Dirコマンドで現在のディレクトリのファイルをファイル名・ワイルドカードで検索することができます。また、Forコマンドの/Rオプションを以下のように使うと、サブディレクトリも含めて画面に出力することができます。

for /R %1 in (*.txt) do @echo %1

ファイルの中身を検索するには?

テキストファイルの中身の検索にはFindコマンドまたはFindstrコマンドを使います。Findstrコマンドの方が簡易的な正規表現を用いた詳細な検索を行うことができます。

ファイルを作成するには?

echo hoge> aaa.txt」と実行すると、「hoge(改行)」という内容のテキストファイル「aaa.txt」を作ることができます。さらに追記するには「echo piyo>> aaa.txt」などと実行します。

空のファイルを作成するコマンドは?

type NUL > file」と、TypeコマンドNULファイル出力リダイレクト「>」を組み合わせて実行します。

Echoで出力した文字をファイルやプログラムに送るとスペースが入ってしまう

echo hoge > aaa.txt」と実行すると、「aaa.txt」は「hoge(スペース)(改行)」という内容になってしまいます。Echoとパイプ出力リダイレクトを使う場合は、パイプ/出力リダイレクトの手前に余分なスペースを含めずに「echo hoge> aaa.txt」などと実行する必要があります。

テキストが文字化けする

日本語環境の場合、通常ではテキストがShift JIS文字コード(cp932)でないと文字化けします。UTF-8を使いたい場合はChcpコマンドを使いますが、一部のコマンドではうまく働かない可能性があります。

Windowsをシャットダウン/再起動するコマンドは?

Shutdownを使います。シャットダウンは「shutdown /s」、再起動は「shutdown /r」で行えます。Windows 95/98/Meではコマンドラインからシャットダウンや再起動をするプログラムは提供されていません。

レジストリを操作(追加や削除)するコマンドは?

Regコマンドを使います。Regコマンドには「Add」「Delete」などのサブコマンドがあり、それらを使って操作することになります。Windows 95/98/Meではコマンドラインからレジストリを操作するプログラムは提供されていません。

プログラムを終了するコマンドは?

Taskkillコマンドを使います。何らかの理由で強制終了させたい場合は「/F」オプションを付けて「taskkill /F /IM プログラム名」と実行します。Windows 95/98/Meではコマンドラインからプログラムを終了するプログラムは提供されていません。

環境変数の使い方は?

「%」文字で変数名を囲います。環境変数を設定するにはSetコマンドSetxコマンド(Windows Vista以降)を使います。

バッチファイル

バッチファイルの作り方は?

メモ帳やその他テキストエディターを使い、1行ずつコマンドを記述したら拡張子を「.bat」にして保存します。保存する際に拡張子が「.bat.txt」とならないようにご注意ください。

バッチファイルをUTF-8の文字コードで作ることは可能?

一応可能ですが、コマンドプロンプトは日本語環境だと既定でShift-JISで解釈しようとするため、非ASCII文字が来る前にChcpコマンドModeコマンドでコードページを「65001」に設定する必要があります。(設定しないと文字化けしたり、コマンドを正しく解釈できない場合があります。)また、一部のコマンドはUTF-8を扱うことができない場合があります。

コマンド表示を消すには?

バッチファイルに記述したコマンドラインが画面に表示されるのを抑止するには「@echo off」をファイルの先頭などに記述します。「@」記号は常にコマンドラインの出力を抑止する際に用いる文字で、「echo off」は以降のコマンドラインの出力を抑止します。

「@echo off」とは?

コマンド表示を消す際に用いる記述です。「@」記号は常に「@」のついたコマンドラインの出力を抑止する際に用いる文字で、「echo off」は以降のコマンドラインの出力を抑止します。両方を組み合わせることで、「@echo off」というコマンドも含めて画面にコマンドを出力しないようにすることができます。

改行のみを出力したいときにはどうすればよい?

「echo.」と、「echo」の直後に「.」(ドット)を記述して実行させることで、改行のみを出力することができます。

変数を使いたいときは?

環境変数を用います。Setコマンドで環境変数を設定、「%VAR%」と変数名を「%」文字で挟むことで変数の内容を利用することができます。

バッチファイルの処理を終了するコマンドは?

「exit /B」を使います。「exit」のみだとコマンドプロンプト全体が終了してしまうので「/B」オプションを付けます。

MS-DOSプロンプトの場合は「/B」オプションが使えないので、Gotoを使ってバッチファイルの末尾にジャンプさせることで終了させます。

引数(パラメーター)を受け取るには?

「%1」という変数を使うと1番目の引数を使うことができます。同様に「%2」で2番目、「%3」で3番目…となります。例えば「foo.bat bar」と実行すると、「foo.bat」内で「%1」を使うと「bar」となります。

バッチファイルでコメントを入力するには?

Remを行の先頭に置き、スペース文字を置いてその後ろにコメントを記述します。または、「:」(コロン)を使ってコメントを書く方法もあります。

バッチファイルにおけるif文は?

if 式1==式2 コマンド」がわかりやすいif文です。その他、「if exist ファイル コマンド」や「if errorlevel 終了コード コマンド」という構文もあります。詳しくはIfのページをご覧ください。

バッチファイルにおけるfor文は?

Forというコマンドがありますが、繰り返したい内容によって構文が変わります。現在のディレクトリにあるファイルを列挙しながらコマンドを実行するには「for %%A in (ファイルパターン) do %%Aを使ったコマンド」とし、ファイルに書かれたテキストを1行ずつ読みながらコマンドを実行するには「for /f "delims=区切り文字" %%A in (ファイル名) do %%Aを使ったコマンド」と実行します。

バッチファイルで関数を作る方法は?

コロン「:」を使ってラベル定義し、Callコマンドを使ってサブルーチンとしてそのラベルを「呼び出す」ことで実現します(サブルーチン処理を終えるには「exit /B」をします)。戻り値の概念は終了コードしかないため、それ以外のデータを扱う場合は環境変数を使って値を受け渡す必要があります。

MS-DOS, Windows 95/98/Me ではCallをラベルの呼び出しに使えないため、Gotoコマンドを駆使する必要があります。

バッチファイルからバッチファイルを実行したら終了してしまった

バッチファイル内から別のバッチファイルを実行することもできますが、その際にCallコマンドを使って実行しないと、別のバッチファイルを実行した時点で元のバッチファイルが終了します。元のバッチファイルで処理を継続したい場合はCallコマンドでバッチファイルを呼び出すことを忘れないようにする必要があります。

なお、バッチファイル内でExitコマンドを「/B」オプションなしに実行した場合、コマンドプロンプトごと終了してしまいます。

バッチファイルで入力待ちをするには?

Pauseコマンドを使うとどれかキー入力があるまで待機することができます。その他、用途に応じてTimeoutコマンドSetコマンドの「/P」オプションでも入力待ちすることができます。