Apa alternatif untuk ~ (direktori home pengguna) pada command prompt Windows?

215

Saya mencoba menggunakan command prompt untuk memindahkan beberapa file, saya terbiasa dengan terminal linux di mana saya gunakan ~untuk menentukan direktori home saya, saya telah mencari di mana-mana tetapi sepertinya saya tidak dapat menemukannya untuk command prompt windows ( Documents and Settings\[user])

fenerlitk
sumber

Jawaban:

325

Anda akan kecewa: %userprofile%

Anda dapat menggunakan terminal lain. Powershell, yang saya yakin bisa Anda dapatkan di XP dan yang lebih baru (dan sudah diinstal sebelumnya dengan Win7), memungkinkan Anda untuk menggunakan ~direktori home.

Jay
sumber
39

Anda bisa %HOMEDRIVE%%HOMEPATH%untuk drive + \docs settings\usernameatau \users\username.

Alex K.
sumber
3
Jawaban ini berfungsi untuk layanan yang berjalan sebagai akun sistem lokal. % userprofile% dalam hal ini tidak.
DonBecker
15

Anda dapat menggunakan %systemdrive%%homepath%variabel lingkungan untuk melakukannya.

Dua variabel perintah ketika digabung memberi Anda jalur direktori home yang diinginkan pengguna seperti di bawah ini:

  1. Berjalan echo %systemdrive%pada command prompt memberi:

    C:
    
  2. Berjalan echo %homepath%pada command prompt memberi:

    \Users\<CurrentUserName>
    

Ketika digunakan bersama-sama menjadi:

C:\Users\<CurrentUserName>
RBT
sumber
Anda juga akan membutuhkan% homedrive%; lihat jawaban Alex K, di atas
Edward Falk
2
@ EdwardFalk Saya sudah memperbaiki jawaban saya. Saya telah melewatkan menyebutkan %systemdrive%variabel lingkungan yang setara %homedrive%dengan yang disebutkan oleh Alex. Tolong beri saya tanggapan Anda tentang ini jika Anda menemukan sesuatu yang salah.
RBT
8
Di windows Anda dapat memindahkan seluruh folder pengguna Anda ke drive lain (Mis: D: \ MyUser). Dalam skenario tersebut% systemdrive %% homepath% akan gagal. % HOMEDRIVE %% HOMEPATH% harus digunakan sebagai gantinya.
Daniel Santos
Benar. Mungkin saja tetapi tidak biasa bagi orang untuk mengubah variabel lingkungan standar ini. Dalam lingkungan perusahaan yang biasa, variabel lingkungan ini diatur oleh departemen TI melalui kebijakan grup AD seperti yang disebutkan di sini dan di sini .
RBT
6

Perbarui - versi yang lebih baik 18 Juli 2019.

Ringkasan terakhir, walaupun saya sudah beralih ke PowerShell untuk sebagian besar pekerjaan konsol windows, tapi saya memutuskan untuk menyelesaikan masalah cmd lama ini, saya harus menggunakan konsol cmd hari ini, dan kurangnya fitur ini sangat mengejutkan saya. Yang ini akhirnya bekerja dengan spasi juga, di mana jawaban saya sebelumnya akan gagal.

Selain itu, yang ini sekarang juga dapat menggunakan ~ sebagai awalan untuk sub-folder rumah lainnya juga, dan swap-forward-slash ke back-slash juga. Jadi begini;

Langkah 1. Buat makro doskey ini , di mana mereka diambil setiap kali cmd dimulai.

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

Langkah 2. Buat file cdtilde.bat dan letakkan di suatu tempat di PATH Anda

@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%"

Diuji dengan baik;

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, juga memungkinkan mengutip malas, yang saya temukan berguna, bahkan ketika spasi di nama path folder, karena membungkus semua argumen seolah-olah itu adalah satu string panjang. Yang berarti hanya kutipan awal juga berfungsi, atau sepenuhnya tanpa penawaran juga berfungsi.

Semua hal lain di bawah ini dapat diabaikan sekarang, dibiarkan karena alasan historis - jadi saya tidak membuat kesalahan yang sama lagi


pembaruan lama 19 Oktober 2018.
Jika ada orang lain yang mencoba pendekatan saya, jawaban asli saya di bawah tidak menangani spasi, misalnya, gagal berikut ini.

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

Saya pikir pasti ada cara untuk menyelesaikannya. Akan memposting lagi jika saya dapat meningkatkan jawaban saya. (lihat di atas, saya akhirnya berhasil dengan cara yang saya inginkan.)


Jawaban Asli saya, masih membutuhkan pekerjaan ... 7 Oktober 2018.
Saya hanya berusaha melakukannya hari ini, dan saya pikir saya mengerti, inilah yang menurut saya berfungsi dengan baik;

Pertama, beberapa makro doskey ;

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

dan kemudian file bat di jalur saya;

cdtilde.bat

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

Semua ini tampaknya berfungsi dengan baik;

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)
Christopher Plewright
sumber
Jawaban ini memiliki cara untuk memulai CMD dengan .bashrcfile -type: superuser.com/questions/144347/… . Menempatkan langkah 1. dari jawaban ini ke dalam bashrc.batfile akan mengaturnya pada saat startup.
Brydenr
2

Jika Anda ingin versi Jay yang lebih pendek, Anda dapat mencoba

    set usr=%userprofile%
    cd %usr%

Atau Anda bahkan bisa menggunakan % u% jika mau. Ini menghemat beberapa penekanan tombol.

Scotty J
sumber
2

Anda dapat melakukan hal yang hampir sama sendiri. Buka Variabel Lingkungan dan klik Tombol "Baru" di "Variabel Pengguna untuk ...".
Nama Variabel: ~
Nilai Variabel: Klik tombol "Browse Directory ..." dan pilih direktori yang Anda inginkan.

Dan setelah ini, buka cmd dan ketik ini:
cd% ~%
. Berhasil.

hkaraoglu
sumber
2

Saya baru saja mencoba set ~=%userprofile%dan itu juga berhasil jika Anda ingin tetap menggunakan kebiasaan yang sama

Anda kemudian dapat menggunakannya %~%.

Mark Richer
sumber
2
Bagaimana Anda menetapkan nilai ~= %userprofile%? Saya menjalankan perintah yang tepat yang disebutkan dalam posting Anda pada command prompt tetapi ada kesalahan - '~' is not recognized as an internal or external command, operable program or batch file.. Bisakah Anda jelaskan sedikit jawaban Anda?
RBT
3
Jika Anda menggunakan set ~=%userprofile%maka Anda dapat menggunakan %~%untuk variabel
forresthopkinsa
0

Hanya menulis skrip untuk melakukan ini tanpa terlalu banyak mengetik sambil mempertahankan portabilitas sebagai pengaturan yang ~akan %userprofile%memerlukan pengaturan manual pada setiap PC Windows sambil mengkloning dan mengatur direktori sebagai bagian dari PATHmekanis.

https://github.com/yxliang01/Snippets/blob/master/windows/

Kentang goreng
sumber
0

Secara sederhana

Tentukan Path Pertama

doskey ~=cd %homepath%

Lalu Akses

~
Matee Gojra
sumber
-5

Anda juga dapat melakukan cd ...... \ sebanyak folder yang membawa Anda ke direktori home. Misalnya, jika Anda berada di cd: \ windows \ syatem32, maka cd .... \ akan membawa Anda ke rumah, yaitu c: \

samvatsar
sumber
2
home! = c: \ Alih-alih, Poster Asli bertanya tentang C:\Users\usernamefolder (atau c:\Documents and Settings\usernamepada Windows sebelumnya)
v.karbovnichy
Bahkan jika Anda ingin pergi ke root C:\ lebih disarankan untuk menggunakan cd \ daripada jumlah yang tidak ditentukancd ..\..\..
lcnittl