回答:
たとえば、以下を保存します。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:
変更ドライブへなど。
pushdとpopdを使用できます:
C:\ WINDOWS> pushd \ C:\> popd C:\ WINDOWS>
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を信じていますが...遅すぎて、ホームディレクトリがすべてなくなりました。
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
$
目的に応じて、「cmd」を実行して新しいcmdセッションを開始し、ディレクトリを移動して必要な操作を実行し、「exit」を実行してセッションを終了します。新しいセッションを開始しました。
受け入れられた答えは、要件に非常に適しています。多くの場合、2つ(現在と以前)だけではなく、多くの最近のディレクトリを切り替える必要があります。
そこで最近、日々の仕事を楽にするバッチを作成しました。 https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
です。ありがとう!それは最高の賛成の答えであるべきです。