Antworten:
Speichern Sie das Folgende, um z. mycd.bat
irgendwo auf deinem Weg:
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
Denken Sie dann immer daran, Verzeichnisse und Laufwerke zu ändern, mycd
anstatt cd
zu verwenden.
Verwenden Sie alternativ ein doskey
Makro:
C:\>doskey cd=mycd $*
Die einzige Einschränkung ist, wenn Sie das Leerzeichen zwischen cd
und ..
oder weglassen \
, erhalten Sie die eingebaute Version und cd
nicht das doskey
Makro ... und Sie müssen immer noch daran denken C:
, D:
usw. nicht zu verwenden , um das Laufwerk zu wechseln.
Sie können pushd und popd verwenden:
C: \ WINDOWS> pushd \ C: \> popd C: \ WINDOWS>
pushd/popd
Sie die Möglichkeit von Fehlern berücksichtigen . Wenn Sie in einem Skript pushd
ein Verzeichnis haben, das nicht existiert, wird es nicht im Stapel beendet, aber wenn Sie popd
eine Ebene verlassen: Variable nicht richtig gefüllt, Druckfehler, falsches Laufwerk ... Sie denken, dass Sie sich in einem anderen Verzeichnis befinden von der, in der Sie sich befinden, mit schwerwiegenden Problemen, z. B. beim Löschen von Dateien / Verzeichnissen. Disaster (Linux-Syntax): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf *
Sie glauben an A, aber ... zu spät ist Ihr gesamtes Home-Verzeichnis verschwunden.
Wenn Sie das genaue Verhalten von bash möchten, warum nicht bash verwenden? Ich habe Cygwin installiert und es ist sehr schön. Sie müssen sich nicht an die UNIX-Tools halten, sondern rufen alle ausführbaren Windows-Dateien auf. Für cmd.exe
Builtins können Sie einen Alias erstellen:
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
$
Es ist ein Freeware - cmd
Klon mit zusätzlichen Funktionen einschließlich cd -
namens Take Command Console LE .
Abhängig von Ihrem Ziel können Sie einfach eine neue cmd-Sitzung starten, indem Sie "cmd" ausführen, das Verzeichnis verschieben und alles tun, was Sie möchten. Wenn Sie dann "exit" ausführen, verlassen Sie die Sitzung wieder in dem Verzeichnis, in dem Sie sich befanden Sie haben die neue Sitzung gestartet.
Die akzeptierte Antwort ist sehr gut für die Anforderung. Dabei muss ich oft zwischen vielen neueren Verzeichnissen wechseln, anstatt nur zwischen zwei (aktuellen und vorherigen).
Deshalb habe ich kürzlich eine Serie erstellt, um meine täglichen Aufgaben zu vereinfachen. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. Vielen Dank! Es sollte die am besten bewertete Antwort sein.
Was ich tue ist
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%