ทางเลือกสำหรับ ~ (โฮมไดเร็กทอรีของผู้ใช้) บนพรอมต์คำสั่ง Windows คืออะไร


215

ฉันพยายามที่จะใช้คำสั่งพร้อมที่จะย้ายไฟล์บางผมใช้ลินุกซ์มินัลที่ผมใช้~ในการระบุไดเรกทอรีบ้านของฉันฉันได้มองทุก แต่ฉันไม่สามารถดูเหมือนจะพบว่ามันสำหรับ Windows พร้อมรับคำสั่ง ( Documents and Settings\[user])

คำตอบ:


324

คุณจะต้องผิดหวัง: %userprofile%

คุณสามารถใช้เทอร์มินัลอื่นได้ Powershell ซึ่งฉันเชื่อว่าคุณสามารถใช้ XP และใหม่กว่า (และติดตั้งมาพร้อมกับ Win7) ช่วยให้คุณสามารถใช้~สำหรับโฮมไดเร็กตอรี่ได้



15

คุณสามารถใช้%systemdrive%%homepath%ตัวแปรสภาพแวดล้อมเพื่อทำสิ่งนี้ให้สำเร็จ

ตัวแปรคำสั่งสองตัวที่ต่อกันจะให้พา ธ โฮมไดเร็กทอรีของผู้ใช้ที่คุณต้องการดังนี้:

  1. การรันecho %systemdrive%พร้อมรับคำสั่งให้:

    C:
    
  2. การรันecho %homepath%พร้อมรับคำสั่งให้:

    \Users\<CurrentUserName>
    

เมื่อใช้ร่วมกันมันจะกลายเป็น:

C:\Users\<CurrentUserName>

คุณจะต้อง% homedrive%; ดูคำตอบของ Alex K ด้านบน
Edward Falk

2
@EdwardFalk ฉันได้แก้ไขคำตอบแล้ว ฉันพลาดที่จะพูดถึง%systemdrive%ตัวแปรสภาพแวดล้อมซึ่งเทียบเท่า%homedrive%กับที่ Alex พูดถึง กรุณาให้ข้อเสนอแนะของคุณเกี่ยวกับเรื่องนี้ถ้าคุณพบว่ามีอะไรไม่ถูกต้อง
RBT

8
ใน windows คุณสามารถย้ายโฟลเดอร์ผู้ใช้ทั้งหมดของคุณไปยังไดรฟ์อื่น (เช่น D: \ MyUser) ในสถานการณ์เหล่านั้น% systemdrive %% homepath% จะล้มเหลว ควรใช้% HOMEDRIVE %% HOMEPATH% แทน
Daniel Santos

จริง เป็นไปได้ แต่ไม่ใช่เรื่องปกติที่คนจะเปลี่ยนตัวแปรสภาพแวดล้อมมาตรฐานเหล่านี้ ในสภาพแวดล้อมขององค์กรปกติตัวแปรสภาพแวดล้อมเหล่านี้จะถูกควบคุมโดยแผนกไอทีผ่านนโยบายกลุ่มโฆษณาตามที่กล่าวไว้ที่นี่และที่นี่
RBT

6

อัพเดท - เวอร์ชั่นที่ดีกว่า 18 กรกฎาคม 2019

บทสรุปสุดท้ายแม้ว่าฉันจะย้ายไปที่ PowerShell สำหรับการทำงานของคอนโซล Windows ส่วนใหญ่แล้ว แต่ฉันตัดสินใจที่จะสรุปปัญหา cmd เก่านี้ขึ้นฉันต้องเข้าสู่ cmd console ในวันนี้และการขาดคุณสมบัตินี้ทำให้ฉันประทับใจจริงๆ อันนี้ใช้ได้กับช่องว่างในที่สุดซึ่งคำตอบก่อนหน้าของฉันจะล้มเหลว

นอกจากนี้ตอนนี้อันนี้ยังสามารถใช้ ~ เป็นคำนำหน้าสำหรับโฟลเดอร์ย่อยโฮมอื่น ๆ ได้เช่นกันและมันจะสลับไปข้างหน้าสแลชไปยังแบ็กสแลชด้วยเช่นกัน ดังนั้นนี่คือ;

ขั้นตอนที่ 1 สร้างมาโครdoskeyเหล่านี้ที่ใดก็ตามที่พวกเขาถูกเรียกขึ้นมาทุกครั้งที่ cmd เริ่มทำงาน

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

ขั้นตอนที่ 2 สร้างไฟล์cdtilde.batและวางไว้ที่อื่นใน PATH ของคุณ

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

ทดสอบอย่างดีกับ;

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

โอ้ฉันยังอนุญาตให้ใช้การอ้างอิงแบบขี้เกียจซึ่งฉันพบว่ามีประโยชน์แม้ว่าช่องว่างจะอยู่ในชื่อพา ธ ของโฟลเดอร์เนื่องจากมันจะตัดอาร์กิวเมนต์ทั้งหมดราวกับว่ามันเป็นสตริงยาวหนึ่งเส้น ซึ่งหมายความว่าเพียงแค่คำพูดเริ่มต้นยังใช้งานได้หรือสมบูรณ์โดยไม่มีคำพูดยังใช้งานได้

สิ่งอื่น ๆ ด้านล่างทั้งหมดอาจถูกเพิกเฉยตอนนี้เหลือไว้สำหรับเหตุผลทางประวัติศาสตร์ดังนั้นฉันจึงไม่ทำผิดพลาดอีกครั้ง


การอัปเดตเก่า 19 ต.ค. 2561
ในกรณีที่คนอื่นลองใช้แนวทางของฉันคำตอบดั้งเดิมของฉันด้านล่างไม่รองรับช่องว่างเช่นการล้มเหลวต่อไปนี้

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

ฉันคิดว่าจะต้องมีวิธีการแก้ปัญหานั้น จะโพสต์อีกครั้งหากฉันสามารถปรับปรุงคำตอบของฉัน (ดูด้านบนในที่สุดฉันก็ใช้งานได้ตามที่ฉันต้องการ)


คำตอบเดิมของฉันยังต้องการงาน ... 7 ต.ค. 2561
ฉันแค่พยายามทำวันนี้และฉันคิดว่าฉันเข้าใจแล้วนี่คือสิ่งที่ฉันคิดว่าใช้ได้ดี

ก่อนอื่นมาโครdoskeyบางอัน ;

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

แล้วจากนั้นไฟล์ค้างคาวในเส้นทางของฉัน;

cdtilde.bat

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

สิ่งเหล่านี้ดูเหมือนจะใช้ได้ดี

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

คำตอบนี้มีวิธีการที่จะเริ่มต้น CMD กับ.bashrcไฟล์ประเภท: superuser.com/questions/144347/... การใส่ขั้นตอนที่ 1 จากคำตอบนี้ลงในbashrc.batไฟล์จะเป็นการตั้งค่าเมื่อเริ่มต้น
Brydenr

2

หากคุณต้องการรุ่นที่สั้นกว่าของเจย์คุณสามารถลอง

    set usr=%userprofile%
    cd %usr%

หรือคุณสามารถใช้% u% ได้ถ้าต้องการ มันบันทึกการกดแป้นบางอย่างอยู่ดี


2

คุณสามารถทำสิ่งเดียวกันได้ด้วยตัวเอง เปิดตัวแปรสภาพแวดล้อมและคลิกปุ่ม "ใหม่" ใน "ตัวแปรผู้ใช้สำหรับ ... "
ชื่อตัวแปร: ~
ค่าตัวแปร:คลิกปุ่ม "เรียกดูไดเรกทอรี ... " และเลือกไดเรกทอรีที่คุณต้องการ

และหลังจากนี้คำสั่งเปิดและพิมพ์นี้:
cd%
~% มันได้ผล.


2

ฉันแค่พยายามset ~=%userprofile%และมันก็ใช้ได้เช่นกันหากคุณต้องการใช้นิสัยแบบเดิมต่อไป

คุณสามารถใช้%~%แทน


2
คุณจะตั้งค่า~= ได้%userprofile%อย่างไร? ฉันวิ่งคำสั่งที่ถูกต้องกล่าวถึงในบทความของคุณบนพร้อมรับคำสั่ง แต่มันจะพ่นข้อผิดพลาด '~' is not recognized as an internal or external command, operable program or batch file.- คุณช่วยอธิบายเพิ่มเติมเล็กน้อยในคำตอบของคุณได้ไหม?
RBT

3
ถ้าคุณใช้set ~=%userprofile%คุณสามารถใช้%~%สำหรับตัวแปร
forresthopkinsa

0

เพียงแค่เขียนบทการทำเช่นนี้โดยไม่ต้องพิมพ์มากเกินไปขณะที่ยังคงพกพาการตั้งค่า~ที่จะ%userprofile%ตอบสนองความต้องการการติดตั้งด้วยตนเองบนคอมพิวเตอร์ที่ใช้ Windows แต่ละขณะที่โคลนและการตั้งค่าไดเรกทอรีเป็นส่วนหนึ่งของPATHกล

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



-5

นอกจากนี้คุณยังสามารถทำแผ่นซีดี ...... \ หลาย ๆ ครั้งเนื่องจากมีโฟลเดอร์ที่นำคุณไปยังโฮมไดเร็กตอรี่ ตัวอย่างเช่นหากคุณอยู่ใน cd: \ windows \ syatem32 ดังนั้น cd .... \ จะพาคุณไปที่บ้านนั่นคือ c: \


2
หน้าแรก! = c: \, โปสเตอร์ต้นฉบับถามเกี่ยวกับC:\Users\usernameโฟลเดอร์ (หรือc:\Documents and Settings\usernameใน Windows รุ่นก่อนหน้า)
v.karbovnichy

แม้ว่าคุณต้องการที่จะไปที่รากC:\ ก็ควรที่จะใช้cd \ แทนจำนวนที่ไม่ได้กำหนดcd ..\..\..
lcnittl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.