Windows komut isteminde önceki dizine gidin


39

Windows komut isteminde önceki dizinde gezinmek için herhangi bir komut / araç var mı?

Linux genellikle kullanmak

cd -

önceki dizin gezinti için.

Yanıtlar:


27

Aşağıdakileri örn. mycd.batyolunuzun bir yerinde:

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

Sonra her zaman dizinleri ve sürücüleri değiştirmek mycdyerine kullanmayı unutmayın cd.

Alternatif olarak, bir doskeymakro kullanın :

C:\>doskey cd=mycd $*

Sadece farkı arasında boşluk çıkarırsanız olduğunu cdve ..ya \, size yerleşik sürümünü alacak cddeğil doskeymakro ... ve hala kullanımda değil hatırlamak zorunda C:, D:değişiklik sürücüye vb.


Çalışmaması gerektiği gibi görünüyor, ama işe yarıyor. OLDPWD doğru ayarlanmış.
Hugh Allen

2
+1 Bu çok hoş, işe yarıyor! ama mycd (veya whtevr) kullanmak için acı verici
ukanth

@HughAllen cd \ ve cd için doskey makro yapabilir .. doskey cd \ = cd \ veya doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop

Bu yarasa c: \ blah.bat% USERPROFILE% için başarısız olur (bu nedenle cd veya cdd% USERPROFILE% başarısız olur). Düzeltmek için tek tırnakları çift tırnak olarak değiştirin.
barlop

39

Pushd ve popd kullanabilirsiniz:

C: \ WINDOWS> pushd \
C: \> Popd
C: \ WINDOWS>

Teşekkürler John, Ama bu tam olarak aradığım şey değil.
ukanth

2
Toplu senaryolarım için tam da istediğim bu, teşekkürler. \ D anahtarına ihtiyaç duymadan sürücüleri bile değiştirir
Deebster

2
Uyarı ile pushd/popdsize hata olasılığını düşünceli zorunda . Bir komut dosyasında, var olmayan pushdbir dizinde yığında popdbitmeyecek, ancak bir seviyeden çıktığınızda : değişken doğru doldurulmamış, missprint, yanlış sürücü ... Farklı bir dizinde yer almayı düşünüyorsunuz İçinde bulunduğunuzdan, ciddi bir problemle, örneğin dosyaları / klasörleri silerken. Felaket (Linux sözdizimi): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * A'ya inanıyorsunuz ama ... çok geç, tüm ev diziniz kayboldu.
Hastur

4

toplu iş dosyasını çalıştırıyorsanız kullanabilirsiniz.

  cd /D  %~dp0

Bu, toplu iş dosyasının çalıştırıldığı orijinal yola geri dönecektir.


4

Eğer bash'ın tam davranışını istiyorsanız, neden bash kullanmıyorsunuz? Ben var cygwin yüklü ve çok güzel. UNIX araçlarına bağlı kalmanızı sağlamaz - çalıştırılabilir tüm pencereleri mutlu bir şekilde çağırır. İçin cmd.exebuiltins bir takma ad oluşturabilirsiniz:

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

Ücretsiz var cmddahil olmak üzere ilave özelliklerle klon cd -denilen Al Komut Konsolu LE .

alt metin


Bu işe yaramıyor
ukanth

2
@TiNS: Tamam Sadece denedim ve benim için çalıştı. Senin için ne yaptı?
Hugh Allen

Konsolu denedim (ana pencereden)
ukanth

1
@TiNS: Ne yaptığınız konusunda net değilim ama belki bu ekran görüntüsü size yardımcı olabilir mi? (cevap güncellendi)
Hugh Allen

1

Amacınızın ne olduğuna bağlı olarak, sadece 'cmd' yaparak yeni bir cmd oturumu başlatabilir, dizini hareket ettirebilir ve ne istersen yapabilirsin, daha sonra oturumu terk etmek için 'çıkış' yaptığında, istediğin dizine geri döneceksin. yeni oturuma başladın.



0

Ne yapıyorum

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%
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.