Windowsコマンドプロンプトの小ネタ・その1
WindowsはGUIが基本ですが、単調な繰り返し作業や定型作業ではコマンドプロンプトを使う方がずーっとラクな場合もあります。それに、けっこう便利なコマンドとかあるんですが、あまり知られてなかったりするようです。
わたしのまわりではこの傾向が顕著でしたので、ちょこっとだけメモしておきます。今回は基本的なものばかりです*1。
OSはWindows XP (SP2) を前提にしてますが、Windows 2000以降であれば大丈夫だと思います。ただし、どっちにしろコマンド拡張機能が有効になってないとうまくいかないものもあります。
ヘルプを読もう
RTFMです。けっこういろいろあります。
何もしないコマンド
remは「何もしないコマンド」です。コメントではないので、 "/?" をコメントアウトしようとしてrem /?とするとremコマンドのヘルプが表示されてしまうので注意。
エクスプローラからファイルをドラッグアンドドロップ
エクスプローラからファイルをドラッグアンドドロップすることで、そのファイル名を入力できます。
conとnul
conはキーボードやコンソールを表すファイルっぽいもので、nulは空っぽのファイルっぽいものです。
C:\> rem キーボードから入力した内容をinput.txtに保存する C:\> rem "^Z" は [Ctrl] + [Z] キーを押すことを表す C:\> copy con input.txt abc def ^Z 1 個のファイルをコピーしました。 C:\> type input.txt abc def C:\> rem 大きさが0バイトのempty.docファイルを作成する C:\> copy nul empty.doc 1 個のファイルをコピーしました。 C:\> dir empty.doc 2006/03/26 (日) 23:28 0 empty.doc 1 個のファイル 0 バイト 0 個のディレクトリ 1,234,567,890 バイトの空き領域 C:\>
特にnulはリダイレクト演算子とともに使うと便利です。
リダイレクト演算子
Windows NTあたりからリダイレクト演算子が強化されてて、Unix系OSのBシェルっぽいことができるようになってます。
C:\> rem エラーメッセージを表示させずにinput.txtとempty.docを消す C:\> del input.txt empty.doc /f >nul 2>&1 C:\>
エスケープ文字
C:\> rem 環境変数に特殊文字を含める C:\> set SPECIAL_CHARS=^& C:\> set SPECIAL_CHARS SPECIAL_CHARS=& C:\> rem コマンドを複数行に分ける C:\> if "%OS%"=="Windows_NT" setlocal ^ More? enableextensions enabledelayedexpansion C:\>
プロンプトの変更
ふつう、プロンプトは "ドライブ:\パス>" のようになってますが、promptコマンドで変更できます。
C:\> rem プロンプトを "ユーザ名@コンピュータ名 ドライブ:\パス$" のように変更する C:\> rem $Pや$$などの使用できる特殊コードは "prompt /?" でわかる C:\> prompt %USERNAME%@%COMPUTERNAME%$S$P$$ mitamu@hatena C:\$ rem 元に戻す mitamu@hatena C:\$ prompt $P$G C:\>
プロンプトは環境変数PROMPTでも設定できるので、システムのプロパティなどで設定しておくと便利です。
pushdとpopd
cdコマンドだけでなく、pushdコマンドやpopdコマンドもあります。dirsコマンドはありませんが、プロンプトを$P$+$Gのように変更するとディレクトリスタックの深さを表示できます。
C:\> prompt $P$+$G C:\> pushd \Documents and Settings\mitamu C:\Documents and Settings\mitamu+> pushd \WINDOWS\Temp C:\WINDOWS\Temp++> popd C:\Documents and Settings\mitamu+> popd C:\>
ネットワークパスを指定すると、自動的にドライブ文字を割り当ててくれます。このドライブ文字は一時的なものであり、Z:から降順に割り当てられます。
ちなみに、わたしはドライブ文字をこんなふうに割り当ててました(今は違いますよ)。
- ローカルドライブ: A: - I:
- ネットワークドライブ: J: - Q:
- 一時的な割り当て: R: - Z:
「アメリカ、ジャパン、ロシア」だとわかる人はなかなかの通ですね。
ドライブとパスをいっぺんに変更
cd /d ドライブ:\パスを実行すると、ドライブとパスをいっぺんに変更できます。
C:\> rem ドライブとパスをばらばらに変更する C:\> d: D:\> cd temp D:\temp> rem ドライブとパスをいっぺんに変更する D:\temp> cd /d "C:\Documents and Settings\mitamu\My Documents" C:\Documents and Settings\mitamu\My Documents>
何でもstartから
startコマンドにファイル名を指定することで、そのファイルに関連付けられたプログラムで開くことができます。特に、start .で現在のディレクトリをエクスプローラで開くことができるので、何かと便利です。
Goodbye, Admin
別のユーザでコマンドを実行するにはrunasコマンドを使います。管理者権限でログインする必要がなくなります*3。
ショートカットを右クリックして [別のユーザーとして実行(A)...] するのとだいたい同じ*4なので、あまり使わないかもしれませんが。