Windows komut isteminde ~ (kullanıcının ana dizini) için alternatif nedir?


215

Bazı dosyaları taşımak için komut istemini kullanmaya çalışıyorum, ~her yerde baktığım ana dizini belirtmek için kullandığım linux terminaline alışkınım ama windows komut istemi için bulamadım ( Documents and Settings\[user])

Yanıtlar:


324

Hayal kırıklığına uğrayacaksınız: %userprofile%

Yine de diğer terminalleri kullanabilirsiniz. XP ve daha sonra (ve Win7 ile önceden yüklenmiş olarak geliyor) alabileceğinize inandığım Powershell, ~ev dizini için kullanmanıza izin verir .



15

Bunu yapmak için %systemdrive%%homepath%ortam değişkenini kullanabilirsiniz .

Birleştirildiğinde iki komut değişkeni, istediğiniz kullanıcının giriş dizini yolunu aşağıdaki gibi verir:

  1. echo %systemdrive%Komut isteminde çalıştırma şunları sağlar:

    C:
    
  2. echo %homepath%Komut isteminde çalıştırma şunları sağlar:

    \Users\<CurrentUserName>
    

Birlikte kullanıldığında şöyle olur:

C:\Users\<CurrentUserName>

ayrıca% homedrive% 'a ihtiyacınız olacak; yukarıdaki Alex K'nin cevabına bakınız
Edward Falk

2
@EdwardFalk Cevabımı düzelttim. Alex'in bahsettiği %systemdrive%eşdeğer çevre değişkeninden bahsetmeyi kaçırmıştım %homedrive%. Yanlış bir şey bulursanız lütfen bana bu konuda geri bildirimde bulunun.
RBT

8
Windows'ta kullanıcı klasörünüzün tamamını başka bir sürücüye taşıyabilirsiniz (Örn: D: \ MyUser). Bu senaryolarda% systemdrive %% homepath% başarısız olur. Bunun yerine% HOMEDRIVE %% HOMEPATH% kullanılmalıdır.
Daniel Santos

Doğru. Bu mümkündür ancak insanların bu standart ortam değişkenlerini değiştirmesi normal değildir. Olağan bir kurumsal ortamda bu ortam değişkenleri BT departmanı tarafından burada ve burada belirtildiği gibi AD grup politikaları tarafından yönetilir .
RBT

6

Güncelleme - daha iyi sürüm 18 Temmuz 2019.

Nihai özet, yine de çoğu windows konsolu çalışması için powershell'e geçmeme rağmen, ancak bu eski cmd sorununu tamamlamaya karar verdim, bugün bir cmd konsolu almak zorunda kaldım ve bu özelliğin eksikliği gerçekten beni vurdu. Bu nihayet önceki cevaplarımın başarısız olacağı alanlarda da işe yarıyor.

Buna ek olarak, bu artık diğer ev alt klasörleri için de önek olarak ~ kullanabiliyor ve eğik çizgileri ters eğik çizgilere de değiştiriyor. İşte burada;

Adım 1. Bu doskey makrolarını cmd her başlatıldığında bir yerde oluşturun.

DOSKEY cd=cdtilde.bat $* 
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..

Adım 2. cdtilde.bat dosyasını oluşturun ve PATH'nizde bir yere koyun

@echo off

set dirname=""
set dirname=%*
set orig_dirname=%*

:: remove quotes - will re-attach later.
set dirname=%dirname:\"=%
set dirname=%dirname:/"=%
set dirname=%dirname:"=%

:: restore dirnames that contained only "/"
if "%dirname%"=="" set dirname=%orig_dirname:"=%

:: strip trailing slash, if longer than 3
if defined dirname if NOT "%dirname:~3%"==""  (
    if "%dirname:~-1%"=="\" set dirname="%dirname:~0,-1%"
    if "%dirname:~-1%"=="/" set dirname="%dirname:~0,-1%"
)

set dirname=%dirname:"=%

:: if starts with ~, then replace ~ with userprofile path
if %dirname:~0,1%==~ (
    set dirname="%USERPROFILE%%dirname:~1%"
)
set dirname=%dirname:"=%

:: replace forward-slashes with back-slashes
set dirname="%dirname:/=\%"
set dirname=%dirname:"=%

chdir /D "%dirname%"

İle iyi test edilmiştir;

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)
cd / (eg, root of C:)
cd ~/.config (eg, the .config folder under my home folder)
cd /Program Files (eg, "C:\Program Files")
cd C:/Program Files (eg, "C:\Program Files")
cd \Program Files (eg, "C:\Program Files")
cd C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files" (eg, "C:\Program Files")

Oh, ayrıca, boşlukları klasör yolu adlarında olsa bile, yararlı bulduğum tembel alıntılara izin verir, çünkü tüm argümanları uzun bir dize gibi sarar. Bu, sadece bir başlangıç ​​teklifinin de çalıştığı veya tırnak işaretleri olmadan da çalıştığı anlamına gelir.

Aşağıdaki diğer şeyler artık göz ardı edilebilir, tarihsel nedenlerden dolayı kaldı - bu yüzden aynı hataları tekrar yapmıyorum


Eski güncelleme 19 Ekim 2018.
Başka birisinin benim yaklaşımımı denemesi durumunda, aşağıdaki orijinal yanıtım boşlukları ele almadı, örneğin, aşağıdakiler başarısız oldu.

> cd "c:\Program Files"
Files""]==["~"] was unexpected at this time.

Bence bunu çözmenin bir yolu olmalı. Cevabımı geliştirirsem tekrar yayınlayacağım. (yukarıya bakın, sonunda hepsini istediğim gibi çalıştırdım.)


Orijinal Cevabım, hala çalışmaya ihtiyaç vardı ... 7 Ekim 2018.
Sadece bugün yapmaya çalışıyordum ve sanırım anladım, bu iyi işlediğini düşünüyorum;

İlk olarak, bazı doskey makroları;

DOSKEY cd=cdtilde.bat $* 
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..

ve sonra yolumdaki bir yarasa dosyası;

cdtilde.bat

@echo off
if ["%1"]==["~"] ( 
    chdir /D "%USERPROFILE%"
) else ( 
    chdir /D %* 
)

Bütün bunlar iyi çalışıyor gibi görünüyor;

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)

Bu yanıtın .bashrcCMD'yi bir tür dosyasıyla başlatmanın bir yolu vardır : superuser.com/questions/144347/… . Bu cevaptan 1. adımı bashrc.batdosyaya koymak, başlangıçta yanıt verecektir.
Brydenr

2

Jay'in daha kısa bir sürümünü istiyorsanız deneyebilirsiniz

    set usr=%userprofile%
    cd %usr%

Ya da isterseniz % u% kullanabilirsiniz. Zaten bazı tuş vuruşlarını kaydeder.


2

Neredeyse aynısını kendiniz de yapabilirsiniz. Ortam Değişkenleri'ni açın ve "Kullanıcı Değişkenleri ..." de "Yeni" Düğmesini tıklayın.
Değişken Adı: ~
Değişken Değer: "Dizine Gözat ..." düğmesini tıklatın ve istediğiniz dizini seçin.

Ve bundan sonra cmd'yi açın ve şunu yazın:
cd% ~%
. İşe yarıyor.


2

Sadece denedim set ~=%userprofile%ve aynı alışkanlığı kullanmaya devam etmek istiyorsanız da işe yarıyor

Bunun %~%yerine kullanabilirsiniz .


2
~= Değerini tam olarak nasıl ayarlarsınız %userprofile%? Komut isteminde mesajınızda belirtilen tam komutu çalıştırdım ama hata atıyor - '~' is not recognized as an internal or external command, operable program or batch file.. Cevabınızı biraz daha ayrıntılı olarak açıklar mısınız?
RBT

3
Eğer kullanıyorsanız set ~=%userprofile%o zaman %~%değişken için kullanabilirsiniz
forresthopkinsa



-5

Sizi ana dizine götüren klasörler olduğu gibi cd ...... \ de yapabilirsiniz. Örneğin, cd: \ windows \ syatem32'deyseniz, cd .... \ sizi eve götürür, yani c: \


2
home! = c: \ Bunun yerine, Orijinal Poster C:\Users\usernameklasör hakkında (veya c:\Documents and Settings\usernamedaha önceki Windows'ta) soruyor
v.karbovnichy

Eğer root gitmek istediğini bile C:\ oldukça kullanılması tavsiye edilir cd \ belirsiz bir numara yerinecd ..\..\..
lcnittl
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.