Điều hướng đến thư mục trước trong dấu nhắc lệnh của windows


39

Có bất kỳ lệnh / công cụ để điều hướng thư mục trước đó trong dấu nhắc lệnh của windows không?

Trong linux thường sử dụng

cd -

để điều hướng thư mục trước.

Câu trả lời:


27

Lưu sau đây để ví dụ. mycd.batmộ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 mycdthay vì cdđể thay đổi thư mục và ổ đĩa.

Ngoài ra, sử dụng một doskeymacro:

C:\>doskey cd=mycd $*

Nhắc nhở duy nhất là nếu bạn bỏ qua khoảng trống giữa cd..hoặc \, bạn sẽ nhận được phiên bản dựng sẵn cdkhông phải là doskeymacro ... và bạn vẫn phải nhớ không sử dụng C:, D:v.v. để thay đổi ổ đĩa.


Có vẻ như nó không hoạt động, nhưng nó làm. OLDPWD được đặt chính xác.
Hugh Allen

2
+1 Điều này thật tuyệt, nó hoạt động! nhưng đau đớn khi sử dụng mycd (hoặc whtevr)
ukanth

@Hugh ALLen có thể tạo macro doskey cho cd \ và cd .. doskey cd \ = cd \ hoặc doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop

Con dơi đó sẽ thất bại với c: \ blah.bat% USERPROFILE% (vì vậy cd hoặc cdd% USERPROFILE% sẽ thất bại). Để khắc phục, thay đổi dấu ngoặc đơn thành dấu ngoặc kép.
barlop

39

Bạn có thể sử dụng Pushd và popd:

C: \ WINDOWS> đẩy \
C: \> popd
C: \ WINDOWS>

Thx John, nhưng đây không phải là chính xác những gì tôi đang tìm kiếm.
ukanth

2
Đó chính xác là những gì tôi muốn cho các tập lệnh bó của tôi, cảm ơn. Nó thậm chí còn thay đổi ổ đĩa mà không cần chuyển đổi \ d
Deebster

2
Cảnh báo Với pushd/popdbạn phải cân nhắc khả năng xảy ra lỗi . Trong một tập lệnh khi pushdthư 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 popdthoá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.
Hastur

4

nếu bạn đang chạy tệp bó, bạn có thể sử dụng

  cd /D  %~dp0

Điều này sẽ quay trở lại đường dẫn ban đầu từ nơi tệp bó được chạy


4

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.exenộ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                             
$ 

3

Có một phần mềm miễn phí cmdbản sao với tính năng bổ sung bao gồm cd -gọi là chỉ huy điều khiển LE .

văn bản thay thế


Điều này không hoạt động
ukanth

2
@TiNS: OK tôi vừa thử nó và nó hoạt động với tôi. Nó đã làm gì cho bạn?
Hugh Allen

Tôi đã thử với bàn điều khiển (từ cửa sổ chính)
ukanth

1
@TiNS: Tôi không rõ những gì bạn đã làm, nhưng có lẽ ảnh chụp màn hình này sẽ giúp ích? (câu trả lời được cập nhật)
Hugh Allen

1

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.


1

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


Thật dễ dàng để gõ cdx :. Cảm ơn! Nó nên là câu trả lời nâng cao hàng đầu.
AndreyWD

0

Những gì tôi làm là

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%
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.