Antworten:
Speichern Sie das Folgende, um z. mycd.batirgendwo 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, mycdanstatt cdzu verwenden.
Verwenden Sie alternativ ein doskeyMakro:
C:\>doskey cd=mycd $*
Die einzige Einschränkung ist, wenn Sie das Leerzeichen zwischen cdund ..oder weglassen \, erhalten Sie die eingebaute Version und cdnicht das doskeyMakro ... 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/popdSie die Möglichkeit von Fehlern berücksichtigen . Wenn Sie in einem Skript pushdein Verzeichnis haben, das nicht existiert, wird es nicht im Stapel beendet, aber wenn Sie popdeine 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.exeBuiltins 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 - cmdKlon 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%