カレントディレクトリを変更後に元のディレクトリに戻る (pushd popd の利用)
カレントディレクトリを変更後に元のディレクトリに戻るコマンドを紹介します。
概要
バッチファイルなどでカレントディレクトリを変更後に処理を実行し、元のディレクトリに戻りたい場合があります。
絶対パスで指定できる場合は問題ありませんが、相対ディレクトリで実行している場合は、元のディレクトリのパスがわからないため、
別の方法で戻る必要があります。この記事では、pushd, popd コマンドを利用して元のディレクトリに戻るコマンドを紹介します。
書式
以下の書式を利用します。
現在のディレクトリを記録して、カレントディレクトリを変更する。
元のディレクトリに戻る。
記述例
pushd C:\data
popd
例1: 単純な例
コマンドプロンプトを表示します。 C:\develop にカレントディレクトリを変更します。・
次のコマンドを実行します。
pushd C:\windows
コマンドを実行すると、カレントディレクトリが、C:\windows になります。
続いて以下のコマンドを実行します。
pushd system32
コマンドを実行するとカレントディレクトリが、 C:\widows\system32 に変わります。
popd コマンドを実行します。
popd
コマンドを実行すると、変更前のカレントディレクトリ、 C:\widows に戻れます。
もう一度popd コマンドを実行します。
popd
コマンドを実行すると、最初のカレントディレクトリ C:\delvelop に戻ります。
例2: FORループと組み合わせる例
以下のバッチファイルを作成します。
コード
@ECHO OFF
FOR /D %%n IN (*) DO (
ECHO %%n にカレントディレクトリを変更します
PUSHD %%n
ECHO New File > info.txt
POPD
)
ECHO 処理が終了しました。
解説
カレントディレクトリでのディレクトリに対してループ処理を実行します。詳しくは
こちらの記事を参照してください。
FOR /D %%n IN (*) DO (
....
)
PUSHDコマンドでカレントディレクトリをサブディレクトリに変更します。
ECHO %%n にカレントディレクトリを変更します
PUSHD %%n
"New File"の文字列を書き込んだinfo.txtファイルを作成します。
ECHO New File > info.txt
POPDコマンドで元のディレクトリに戻ります。
POPD
バッチファイルを実行すると、各サブフォルダに "info.txt"ファイルを作成します。
実行結果
ディレクトリを準備します。バッチファイルを配置したディレクトリに、main, sub1, sub2 ディレクトリを作成します。
サブディレクトリ内はいずれのディレクトリも空にします。
バッチファイルを実行します。
バッチファイルを配置したディレクトリは変化はありません。
サブディレクトリ内には、それぞれのディレクトリに info.txt ファイルが作成されています。
例3: cdコマンドでカレントディレクトリを変更したい場合に前のディレクトリに戻る
pushd .
コマンドを実行するとカレントディレクトリのパスをプッシュできます。
カレントディレクトリが
c:\develop
の状態で下記コマンドを実行します。
pushd .
カレントディレクトリがディレクトリスタックにプッシュされます。
カレントディレクトリを変更しますが、pushdコマンドではなくcdコマンドで変更します。
cd c:\storeda\data
カレントディレクトリが変更できました。popdコマンドを実行します。
popd
cd コマンドでカレントディレクトリを変更しましたが、popdコマンドで前のディレクトリに戻れます。
pushd, popd コマンドを利用してカレントディレクトリを変更後に元のディレクトリに戻る操作ができました。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。