Windowsコマンドプロンプトで前のディレクトリに移動する


39

Windowsコマンドプロンプトで前のディレクトリをナビゲートするコマンド/ツールはありますか?

Linuxでは通常使用します

cd -

前のディレクトリナビゲーション用。

回答:


27

たとえば、以下を保存します。mycd.batあなたのパスのどこかに:

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)

その後、常にディレクトリとドライブを変更するmycd代わりに使用することを忘れないでくださいcd

または、doskeyマクロを使用します。

C:\>doskey cd=mycd $*

唯一の注意点は、あなたが間にスペースを省略した場合であるcd..\、あなたがの組み込みバージョンを取得しますcdないdoskeyマクロを...そしてあなたはまだ使用しないように覚えておく必要がありC:D:変更ドライブへなど。


動作しないように見えますが、動作します。OLDPWDは正しく設定されます。
ヒューアレン

2
+1これはいいですね、動作します!しかし、痛みを伴うmycd(またはwhtevr)を使用するには
ukanth

@HughAllenは、CDのためのDOSKEYマクロを作成し、\とCD .. DOSKEYでcd \ = CD \またはDOSKEYのCD \ = Cすることができます:\ mycd.bat \ DOSKEY C:= C:\ mycd.bat C:
barlop

c:\ blah.bat%USERPROFILE%の場合、このバットは失敗します(したがって、cdまたはcdd%USERPROFILE%は失敗します)。修正するには、一重引用符を二重引用符に変更します。
barlop

39

pushdとpopdを使用できます:

C:\ WINDOWS> pushd \
C:\> popd
C:\ WINDOWS>

Thxジョン、しかしこれはまさに私が探しているものではありません。
ukanth

2
バッチスクリプトにまさに必要なものです。ありがとう。\ dスイッチを必要とせずにドライブも変更します
Deebster

2
警告ではpushd/popd、あなたは、エラーの可能性を思いやりする必要があります。スクリプトpushdでは、存在しないディレクトリはスタックで終了しませんがpopd、1つのレベルを終了すると:変数が正しく入力されていない、ミスプリント、ドライブが間違っている...異なるディレクトリにあると思いますたとえば、ファイル/ディレクトリを削除するときなど、深刻な問題が発生しています。災害(Linux構文):cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * Aを信じていますが...遅すぎて、ホームディレクトリがすべてなくなりました。
ハスター

4

あなたが使用できるバッチファイルを実行している場合

  cd /D  %~dp0

これにより、バッチファイルが実行された元のパスに戻ります


4

bashの正確な動作が必要な場合は、bashを使用してみませんか?私がしているcygwinのインストールと、それは非常にいいです。UNIXツールに固執することはありません。Windows実行可能ファイルを喜んで呼び出します。以下のためにcmd.exe組み込みコマンドエイリアスを作成することができます。

hugh@comp07 ~/testdir                             
$ alias cm='cmd /c'                               

hugh@comp07 ~/testdir                             
$ cm dir                                          
 Volume in drive C has no label.                  
 Volume Serial Number is AC2A-8378                

 Directory of C:\cygwin\home\hugh\testdir         

18/05/2010  02:02 PM    <DIR>          .          
18/05/2010  02:02 PM    <DIR>          ..         
               0 File(s)              0 bytes     
               2 Dir(s)   1,365,155,840 bytes free

hugh@comp07 ~/testdir                             
$ 

3

Take Command Console LEと呼ばれるcmd追加機能を備えたフリーウェアクローンがあります。cd -

代替テキスト


これは機能しません
-ukanth

2
@TiNS:OK、試しただけでうまくいきました。それはあなたのために何をしましたか?
ヒューアレン

コンソールで(メインウィンドウから)
試した

1
@TiNS:あなたが何をしたのか明確ではありませんが、このスクリーンショットが役立つのでしょうか?(回答更新)
ヒューアレン

1

目的に応じて、「cmd」を実行して新しいcmdセッションを開始し、ディレクトリを移動して必要な操作を実行し、「exit」を実行してセッションを終了します。新しいセッションを開始しました。


1

受け入れられた答えは、要件に非常に適しています。多くの場合、2つ(現在と以前)だけではなく、多くの最近のディレクトリを切り替える必要があります。

そこで最近、日々の仕事を楽にするバッチを作成しました。 https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec


入力はとても簡単cdx :です。ありがとう!それは最高の賛成の答えであるべきです。
AndreyWD

0

私がやることは

rem capture the path of the initial dir
set RET_DIR=%CD%
rem do stuff...
rem and then return to the initial dir
cd %RET_DIR%
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.