Arahkan ke direktori sebelumnya di command prompt windows

39

Apakah ada perintah / alat untuk menavigasi direktori sebelumnya di command prompt windows?

Di linux biasanya digunakan

cd -

untuk navigasi direktori sebelumnya.

ukanth
sumber

Jawaban:

27

Simpan yang berikut ke mis. mycd.batdi suatu tempat di jalur Anda:

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)

Maka selalu ingat untuk menggunakan mycdalih-alih cdmengubah direktori dan drive.

Atau, gunakan doskeymakro:

C:\>doskey cd=mycd $*

Satu-satunya peringatan adalah jika Anda menghilangkan ruang antara cddan ..atau \, Anda akan mendapatkan versi builtin cdbukan doskeymakro ... dan Anda masih harus ingat untuk tidak menggunakan C:, D:dll untuk mengubah drive.

Hugh Allen
sumber
Sepertinya itu seharusnya tidak berfungsi, tetapi ternyata berhasil. OLDPWD diatur dengan benar.
Hugh Allen
2
+1 Ini bagus, berhasil! tetapi menyakitkan untuk menggunakan mycd (atau whtevr)
ukanth
@HughAllen dapat membuat makro doskey untuk cd \ dan cd .. doskey cd \ = cd \ atau doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop
Kelelawar itu akan gagal untuk c: \ blah.bat% USERPROFILE% (jadi cd atau cdd% USERPROFILE% akan gagal). Untuk memperbaikinya, ubah tanda kutip tunggal menjadi tanda kutip ganda.
barlop
39

Anda dapat menggunakan pushd dan popd:

C: \ WINDOWS> pushd \
C: \> popd
C: \ WINDOWS>
John T
sumber
Thx John, Tapi ini bukan yang saya cari.
ukanth
2
Persis seperti yang saya inginkan untuk skrip batch saya, terima kasih. Ia bahkan mengubah drive tanpa perlu sakelar \ d
Deebster
2
Peringatan Dengan pushd/popdAnda harus mempertimbangkan kemungkinan kesalahan . Dalam naskah saat Andapushd direktori yang tidak ada itu tidak akan selesai di tumpukan, tetapi ketika popdAnda akan keluar dari satu tingkat: variabel tidak diisi dengan benar, salah cetak, drive salah ... Anda berpikir berada di direktori yang berbeda dari yang mana Anda berada, dengan masalah serius misalnya ketika Anda menghapus file / dir. Bencana (sintaks Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * Anda percaya pada A tetapi ... terlambat, semua direktori home Anda hilang.
Hastur
4

jika Anda menjalankan file batch yang dapat Anda gunakan

  cd /D  %~dp0

Ini akan melompat kembali ke jalur asli dari mana file batch dijalankan

ggonsalv
sumber
4

Jika Anda menginginkan perilaku bash yang tepat, mengapa tidak menggunakan bash? Saya telah menginstal cygwin dan itu sangat bagus. Itu tidak membuat Anda tetap berpegang pada alat UNIX - itu akan dengan senang hati menyebut semua jendela yang dapat dieksekusi. Untuk cmd.exebuiltin Anda dapat membuat alias:

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                             
$ 
Hugh Allen
sumber
3

Ada cmdklon freeware dengan fitur tambahan termasuk cd -disebut Take Command Console LE .

teks alternatif

Hugh Allen
sumber
Ini tidak berhasil
ukanth
2
@TiNS: OK, saya baru saja mencobanya dan itu berhasil untuk saya. Apa yang dilakukan untukmu?
Hugh Allen
Saya mencoba dengan konsol (dari jendela utama)
ukanth
1
@TiNS: Saya tidak jelas dengan apa yang Anda lakukan, tapi mungkin tangkapan layar ini akan membantu? (jawaban diperbarui)
Hugh Allen
1

Bergantung apa tujuan Anda, Anda bisa memulai sesi cmd baru dengan melakukan 'cmd', memindahkan direktori dan melakukan apa pun yang Anda inginkan, ketika Anda kemudian melakukan 'keluar' untuk meninggalkan sesi Anda akan kembali ke direktori Anda ketika Anda memulai sesi baru.

pengguna210211
sumber
1

Jawaban yang diterima sangat bagus untuk persyaratan. Sementara saya sering harus beralih di antara banyak direktori, bukan hanya dua (saat ini dan sebelumnya).

Jadi saya baru-baru ini membuat batch untuk membuat pekerjaan sehari-hari saya lebih mudah. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec

Programus
sumber
Sangat mudah untuk mengetik cdx :. Terima kasih! Itu harus menjadi jawaban yang dipilih secara top.
AndreyWD
0

Apa yang saya lakukan adalah

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%
amfibi
sumber