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.

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.


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>

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


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                             
$ 

3

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

teks alternatif


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.



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%
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.