Thay thế cho ~ (thư mục chính của người dùng) trên dấu nhắc lệnh của Windows là gì?


215

Tôi đang cố gắng sử dụng dấu nhắc lệnh để di chuyển một số tệp, tôi đã sử dụng đến thiết bị đầu cuối linux nơi tôi sử dụng ~để chỉ định thư mục chính của mình tôi đã tìm ở khắp mọi nơi nhưng dường như tôi không thể tìm thấy nó cho dấu nhắc lệnh của windows ( Documents and Settings\[user])

Câu trả lời:


324

Bạn sẽ thất vọng: %userprofile%

Bạn có thể sử dụng các thiết bị đầu cuối khác, mặc dù. Powershell, mà tôi tin rằng bạn có thể có trên XP và sau này (và được cài đặt sẵn với Win7), cho phép bạn sử dụng ~cho thư mục chính.


39

Bạn có thể %HOMEDRIVE%%HOMEPATH%cho ổ đĩa + \docs settings\usernamehoặc \users\username.


3
Câu trả lời này đã làm việc cho một dịch vụ chạy như tài khoản hệ thống cục bộ. % userprofile% trong trường hợp này thì không.
DonBecker 18/03/2015

15

Bạn có thể sử dụng %systemdrive%%homepath%biến môi trường để thực hiện điều này.

Hai biến lệnh khi được nối sẽ cung cấp cho bạn đường dẫn thư mục chính của người dùng mong muốn như sau:

  1. Chạy echo %systemdrive%trên dấu nhắc lệnh cho:

    C:
    
  2. Chạy echo %homepath%trên dấu nhắc lệnh cho:

    \Users\<CurrentUserName>
    

Khi được sử dụng cùng nhau, nó trở thành:

C:\Users\<CurrentUserName>

bạn cũng sẽ cần% homedrive%; xem câu trả lời của Alex K, ở trên
Edward Falk

2
@EdwardFalk Tôi đã sửa câu trả lời của mình. Tôi đã bỏ lỡ đề cập đến %systemdrive%biến môi trường tương đương với %homedrive%đề cập của Alex. Xin vui lòng cho tôi thông tin phản hồi của bạn về điều này nếu bạn tìm thấy bất cứ điều gì không chính xác.
RBT

8
Trong cửa sổ, bạn có thể di chuyển toàn bộ thư mục người dùng của mình sang ổ đĩa khác (Ví dụ: D: \ MyUser). Trong các trường hợp đó,% systemdrive %% homepath% sẽ thất bại. Thay vào đó, nên sử dụng% HOMEDRIVE %% HOMEPATH%.
Daniel Santos

Thật. Có thể nhưng mọi người thường không thay đổi các biến môi trường tiêu chuẩn này. Trong một môi trường doanh nghiệp thông thường, các biến môi trường này được điều chỉnh bởi bộ phận CNTT thông qua các chính sách của nhóm AD như được đề cập ở đâyở đây .
RBT

6

Cập nhật - phiên bản tốt hơn ngày 18 tháng 7 năm 2019.

Tóm tắt cuối cùng, mặc dù tôi đã chuyển sang powershell cho hầu hết các giao diện điều khiển windows, nhưng tôi đã quyết định xử lý vấn đề cmd cũ này, tôi đã phải sử dụng giao diện điều khiển cmd ngày hôm nay và việc thiếu tính năng này thực sự gây ấn tượng với tôi. Điều này cuối cùng cũng hoạt động với không gian, nơi câu trả lời trước của tôi sẽ thất bại.

Ngoài ra, cái này bây giờ cũng có thể sử dụng ~ làm tiền tố cho các thư mục con khác trong nhà, và nó cũng hoán đổi các dấu gạch chéo về phía trước để gạch chéo ngược. Vì vậy, đây là;

Bước 1. Tạo các macro doskey này , ở đâu đó chúng sẽ được nhận mỗi khi cmd khởi động.

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

Bước 2. Tạo tệp cdtilde.bat và đặt nó ở đâu đó trong PATH của bạn

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

Đã kiểm tra tốt với;

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")

Ồ, nó cũng cho phép trích dẫn lười biếng, điều mà tôi thấy hữu ích, ngay cả khi khoảng trắng nằm trong tên đường dẫn thư mục, vì nó bao bọc tất cả các đối số như thể nó là một chuỗi dài. Có nghĩa là chỉ một trích dẫn ban đầu cũng hoạt động, hoặc hoàn toàn không có trích dẫn cũng hoạt động.

Tất cả những thứ khác dưới đây có thể bị bỏ qua ngay bây giờ, nó bị bỏ lại vì lý do lịch sử - vì vậy tôi không mắc lại sai lầm tương tự


cập nhật cũ ngày 19 tháng 10 năm 2018.
Trong trường hợp bất kỳ ai khác thử cách tiếp cận của tôi, câu trả lời ban đầu của tôi dưới đây không xử lý các khoảng trắng, ví dụ: sau đây không thành công.

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

Tôi nghĩ rằng phải có một cách để giải quyết điều đó. Sẽ đăng lại nếu tôi có thể cải thiện câu trả lời của tôi. (xem ở trên, cuối cùng tôi đã làm cho tất cả hoạt động theo cách tôi muốn.)


Câu trả lời ban đầu của tôi, vẫn cần công việc ... ngày 7 tháng 10 năm 2018.
Tôi chỉ cố gắng thực hiện ngày hôm nay và tôi nghĩ rằng tôi đã nhận được nó, đây là điều tôi nghĩ hoạt động tốt;

Đầu tiên, một số macro doskey ;

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

và sau đó một tập tin bat trong đường dẫn của tôi;

cdtilde.bat

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

Tất cả những thứ này dường như hoạt động tốt;

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

Câu trả lời này có cách để bắt đầu CMD với .bashrctệp -type: superuser.com/questions/144347/ . Đặt bước 1. từ câu trả lời này vào bashrc.battệp sẽ đặt nó khi khởi động.
Brydenr

2

Nếu bạn muốn phiên bản ngắn hơn của Jay, bạn có thể thử

    set usr=%userprofile%
    cd %usr%

Hoặc thậm chí bạn có thể sử dụng % u% nếu bạn muốn. Nó tiết kiệm một số tổ hợp phím nào.


2

Bạn có thể làm gần như chính mình. Mở Biến môi trường và nhấp vào nút "Mới" trong "Biến người dùng cho ...".
Tên biến: ~
Giá trị biến: Nhấp vào nút "Duyệt thư mục ..." và chọn thư mục bạn muốn.

Và sau đó, mở cmd và gõ này:
cd% ~%
. Nó hoạt động.


2

Tôi chỉ thử set ~=%userprofile%và nó cũng hoạt động nếu bạn muốn tiếp tục sử dụng cùng một thói quen

Sau đó bạn có thể sử dụng %~%thay thế.


2
Làm thế nào để bạn đặt chính xác giá trị của ~= %userprofile%? Tôi đã chạy lệnh chính xác được đề cập trong bài viết của bạn trên dấu nhắc lệnh nhưng nó lại báo lỗi - '~' is not recognized as an internal or external command, operable program or batch file.. Bạn có thể vui lòng giải thích thêm câu trả lời của bạn?
RBT

3
Nếu bạn sử dụng set ~=%userprofile%thì bạn có thể sử dụng %~%cho biến
forresthopkinsa


0

Đơn giản

Con đường xác định đầu tiên

doskey ~=cd %homepath%

Sau đó truy cập

~

-5

Bạn cũng có thể thực hiện cd ...... \ nhiều lần như có các thư mục đưa bạn đến thư mục chính. Ví dụ: nếu bạn đang ở trong cd: \ windows \ syHR32, thì cd .... \ sẽ đưa bạn về nhà, đó là c: \


2
home! = c: \ Thay vào đó, Poster gốc hỏi về C:\Users\usernamethư mục (hoặc c:\Documents and Settings\usernametrong Windows trước đó)
v.karbovnichy

Ngay cả khi bạn muốn đi đến root, C:\ bạn nên sử dụng cd \ thay vì số lượng không xác địnhcd ..\..\..
lcnittl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.