Câu trả lời:
Lưu sau đây để ví dụ. mycd.bat
một nơi nào đó trên con đường của bạn:
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
Sau đó luôn luôn nhớ sử dụng mycd
thay vì cd
để thay đổi thư mục và ổ đĩa.
Ngoài ra, sử dụng một doskey
macro:
C:\>doskey cd=mycd $*
Nhắc nhở duy nhất là nếu bạn bỏ qua khoảng trống giữa cd
và ..
hoặc \
, bạn sẽ nhận được phiên bản dựng sẵn cd
không phải là doskey
macro ... và bạn vẫn phải nhớ không sử dụng C:
, D:
v.v. để thay đổi ổ đĩa.
Bạn có thể sử dụng Pushd và popd:
C: \ WINDOWS> đẩy \ C: \> popd C: \ WINDOWS>
pushd/popd
bạn phải cân nhắc khả năng xảy ra lỗi . Trong một tập lệnh khi pushd
thư mục của bạn không tồn tại, nó sẽ không hoàn thành trong ngăn xếp, nhưng khi bạn popd
thoát khỏi một cấp: biến không được điền chính xác, sai sót, sai ổ đĩa ... Bạn nghĩ rằng trong một thư mục khác từ một trong đó bạn đang gặp vấn đề nghiêm trọng, ví dụ như khi bạn xóa các tập tin / thư mục. Thảm họa (cú pháp Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf *
bạn tin vào A nhưng ... quá muộn, tất cả thư mục nhà của bạn đã biến mất.
Nếu bạn muốn hành vi chính xác của bash, tại sao không sử dụng bash? Tôi đã cài đặt Cygwin và nó rất đẹp. Nó không khiến bạn dính vào các công cụ UNIX của nó - nó sẽ vui vẻ gọi bất kỳ cửa sổ nào có thể thực thi được. Đối với cmd.exe
nội dung, bạn có thể tạo bí danh:
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
$
Có một phần mềm miễn phí cmd
bản sao với tính năng bổ sung bao gồm cd -
gọi là chỉ huy điều khiển LE .
Tùy thuộc vào mục tiêu của bạn là gì, bạn có thể bắt đầu một phiên cmd mới bằng cách thực hiện 'cmd', di chuyển thư mục và làm bất cứ điều gì bạn muốn, khi đó bạn thực hiện 'thoát' để rời khỏi phiên bạn sẽ quay lại thư mục khi bạn ở bạn đã bắt đầu phiên mới.
Câu trả lời được chấp nhận là rất lớn cho các yêu cầu. Trong khi tôi thường phải chuyển đổi giữa nhiều thư mục gần đây thay vì chỉ hai (hiện tại và trước đó).
Vì vậy, gần đây tôi đã thực hiện một lô để làm cho công việc hàng ngày của tôi dễ dàng hơn. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. Cảm ơn! Nó nên là câu trả lời nâng cao hàng đầu.