Geçerli dizinin tam yolunu almak için Windows kabuk komutu?


223

Geçerli çalışma dizininin tam yolunu almak için kullanabileceğim bir Windows komut satırı komutu var mı?

Ayrıca, bu yolu bir toplu iş dosyasında kullanılan bir değişkenin içinde nasıl saklayabilirim?


find / dir / to / start / from -type f -ls Bu tarihi tarihi sayısal find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% olarak biçimlendirir e% H:% M "{} \;

Yanıtlar:


356

cdKabuğu doğrudan kullanıyorsanız veya %cd%bir toplu iş dosyasında kullanmak istiyorsanız (ortam değişkeni gibi davranır) bağımsız değişken olmadan kullanın .


11
Nasıl mı sen o dan söylemeye çalıştığım anlamak o ? Ve dos ve windows cmd altında, genellikle sadece "cd"
Rook

10
Dürüst olmak gerekirse, soru belirtildiği gibi sormaya çalıştıkları başka bir şey düşünemedim.
Trevor Bramble

1
Bu yolu bir .bat dosyasındaki bir değişkenin içinde saklayabilir miyim?
user62958

@unknown - orijinal sorunu en başta açıklayarak daha iyi olabilirsiniz.
Kale

100

Bir toplu iş / ortam değişkenini aşağıdaki gibi ayarlayabilirsiniz:

SET var=%cd%
ECHO %var%

Windows 7 x64 cmd.exe dosyasından örnek ekran görüntüsü.

resim açıklamasını buraya girin

Güncelleme:SET var = %cd% yerinebir şey yaparsanızSET var=%cd%, ne olur aşağıda. Jeb sayesinde.

resim açıklamasını buraya girin

Geçerli dizini toplu iş dosyasından yakalama


2
Soruya göre, bu cevap aslında kabul edilen cevap olmalıdır.
René Nyffenegger

7
Ama SET var = %cd%değişkendeki değeri var<space>içine koymak gibi işe yaramaz var. SET komutundaki boşluklardan kaçınmalısınız
jeb

1
Soruya göre, bu cevap aslında kabul edilen cevap olmalıdır.
shridutt kothari

51

setKomut ( set /?) için Windows yardımını alıntılayın :

Komut Uzantıları etkinse, birkaç dinamik var
genişletilebilen ancak görünmeyen ortam değişkenleri
SET tarafından görüntülenen değişkenlerin listesi. Bu değişken değerler
değişkenin değeri her genişletildiğinde dinamik olarak hesaplanır.
Kullanıcı bu adlardan birine sahip bir değişkeni açıkça tanımlarsa,
bu tanım, aşağıda açıklanan dinamik olanı geçersiz kılar:

% CD% - geçerli dizin dizesine genişler.

% DATE% - DATE komutuyla aynı biçimi kullanarak geçerli tarihe genişler.

% TIME% - TIME komutuyla aynı biçimi kullanarak geçerli saate genişler.

% RANDOM% - 0 ile 32767 arasında rastgele bir ondalık sayıya genişler.

% ERRORLEVEL% - geçerli ERRORLEVEL değerine genişler

% CMDEXTVERSION% - geçerli Komut İşlemcisi Uzantılarına genişler
    versiyon numarası.

% CMDCMDLINE% - çağrıyı başlatan orijinal komut satırına genişler
    Komut İşlemcisi.

Parçayı not edin %CD% - expands to the current directory string..


26

Unix'te mi?

pwd


2
OP başlangıçta bir "komut" istedi ve işletim sistemi belirtmedi. İşletim sistemi belirtildi, bu nedenle bu cevap artık alakalı değil.
Tisch

18

Windows için şunu kullanabiliriz

cd

ve Linux için

pwd

komut orada.


17

Bu benim için her zaman işe yaradı:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause

2
Bu yanlış bir şey yapar - geçerli dizinin değil, toplu iş komut dosyasının yolunu bulur.
Harry Johnston

2
OP'nin sorusunu cevapladığı ve bana aradığım tam çözümü verdiği için seçildi. Teşekkürler!
A-Diddy

İyi yakaladın. Geçerli dizin, dosyanın konumu yerine dosyayı çağıran komuta başvurabilir.
Tam Le

9

Pencereler için, cd kendi başına geçerli çalışma dizinini gösterecektir.

UNIX ve benzeri sistemler pwdiçin aynı görevi yerine getirecektir. $PWDKabuk değişkenini bazı kabukların altında da kullanabilirsiniz . Windows'un geçerli çalışma dizinini bir kabuk değişkeni aracılığıyla almayı destekleyip desteklemediğinden emin değilim.


Ancak onun şu anki yönünü görmek için neden "cd" ye ihtiyacı olduğunu anlayamıyorum. Varsayılan olarak gün olarak görünür. Ve eğer değiştirirse, "cd" nin ne yaptığını kesinlikle bildiğinden.
Kale

çok eski, ama sadece bütünlük için: evet, pencereler bunun için bir değişken var. %cd%
Stephan

8

Windows'ta:

CHDIR Geçerli dizinin adını görüntüler veya değiştirir.

Linux'ta:

PWD Geçerli dizinin adını görüntüler.


5

Takip sorusuna dayanarak (verileri bir değişkente saklayın) chdir post yorumlarına göre bahse girerim, dizinleri değiştirdikten sonra geri yüklemek için mevcut yolu saklamak istiyor.

Orijinal kullanıcı dizini değiştiren ve geçerli olanı "popd" ile geri yüklenebilecek bir yığına iten "pushd" e bakmalıdır. Herhangi bir modern Windows cmd kabuğu üzerinde toplu iş dosyaları yaparken gitmek için bir yoldur.

Mevcut yolu gerçekten yakalamanız gerekiyorsa, modern cmd kabukları, referans için başka bir değişkende kolayca uzaklaştırabileceğiniz% CD% değişkenine de sahiptir.


5

.batAltında bir dosya oluşturun System32, bize copypath.batşu anki yolu kopyalama komutu olabilir :

echo %cd% | clip

Açıklama:

%cd% size mevcut yolu verecektir

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Şimdi copyclipher yerden erişilebilir.


3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

Ancak, elbette , gmaran23'ün cevabı çok daha kolay.


Cevabı tanım gereği daha iyi çünkü cevabınız yanlış. Boşluklu yollar için çalışmaz.
Gosha

Ekleme bunu tokens=*düzeltir.
René Nyffenegger

2

Windows komut isteminde chdirveya cdkonsoldaki geçerli çalışma dizininin tam yolunu yazdırır.

Biz yolunu kopyalamak istiyorsanız o zaman kullanabilirsiniz: cd | clip.


0

Olası kodlardan biri olarak

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"

-1

Windows'ta, cdgeçerli çalışma yolunu yazın.

Linux'ta pwdgeçerli çalışma yolu için.


6
Aynı çözümle zaten 10 cevap var, ancak daha fazla açıklama var
jeb
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.