Windowsコマンド

コマンドプロンプトのpushdコマンド

コマンドプロンプトでカレントディレクトリを移動するにはcdを使う。 cd /d d:\tempのように/dオプションを使えば別のドライブに移動できる。 今まで当たり前のようにディレクトリの移動にはcdを使ってきたが、pushdというcdより素敵なコマンドを発見したので使ってみる。(Windows7) pushdの利点 pushdコマンドはcdと同様にカレントディレクトリを移動できるが以下の利点がある。 pushdを実行した後、popdで元のディレクトリに戻れる 現在のドライブとは別のドライブに移動できる \server\hoge\fugaのようなUNCパスに移動できる popdで元のディレクトリに戻る pushdでカレントディレクトリを移動すると移動前のカレントディレクトリがディレクトリスタックに保存されていく。 pushdを引数なしで実行すると現在のディレクトリスタックを表示する。 popdを実行すると直前に保存したパスに移動され、そのパスはディレクトリスタックから削除される。 C:\temp>pushd C:\ C:\>pushd Windows C:\Windows>pushd Logs # 引数なしのpushdでディレクトリスタックを表示 C:\Windows\Logs>pushd C:\Windows C:\ C:\temp # popdで移動前のディレクトリに戻る C:\Windows\Logs>popd C:\Windows>popd C:\>popd C:\temp> 別のドライブに移動 C:\temp>pushd E:\test E:\test> UNCパスに移動 UNCパスをpushdすると空きドライブに自動的に割り当てられ、移動できる。 popdで元のディレクトリに戻るとドライブの割り当ては解除される。 E:\test>pushd \\server1\UserData\UserData\test Z:\test> Z:\test>net use ステータス ローカル名 リモート名 ネットワーク名 -------------------------------------------------------------------------- OK Z: \\server1\UserData Microsoft Windows Network コマンドは正常に終了しました。 Z:\test>popd E:\test>net use 新しい接続は記憶されます。 一覧にエントリが存在しません。 pushdでZドライブが割り当られ、popdで割り当ては解除された。

バッチファイルのテンプレート

バッチファイルを作ることは最近減ってきているが、たまに作るときに一から作成すると時間がかかるので、最低限のテンプレートを用意しておく。 @echo off rem バッチファイルの説明 rem 環境変数の定義 set VAR1="VAR1の値" set VAR2="VAR2の値" pushd "%~dp0" pause echo offは実行するコマンドを表示させないコマンド。@をコマンドの前につけるとそのコマンドは表示されなくなるが、すべてのコマンドに@をつけるのは面倒なのでecho offですべてのコマンドを表示しないようにする。 ただし、echo off自体は表示されてしまうので@をつける。 remはコマンド行。 setは環境変数を設定する。 pushdはディレクトリの移動するコマンドで、%~dp0はこのバッチファイルがあるディレクトリを表す。 なのでpushd "%~dp0"はこのバッチファイルがあるディレクトリをカレントディレクトリにする。 ディレクトリの移動はcdでもできるが、cdと比べてpushdは以下の利点がある。 pushdを実行した後、popdで元のディレクトリに戻れる 現在のドライブとは別のドライブに移動できる \server\hoge\fugaのようなUNCパスに移動できる pauseは処理を一時停止するコマンド。このコマンドがないとウィンドウが閉じてしまい処理結果がわからないので入れておく。