Windows 명령 프롬프트에서 ~ (사용자의 홈 디렉토리)에 대한 대안은 무엇입니까?


215

명령 프롬프트를 사용하여 일부 파일을 이동하려고하는데 Linux 터미널에서 익숙해 ~졌지만 어디에서나 보았던 홈 디렉토리를 지정하는 데 사용되었지만 Windows 명령 프롬프트에서 찾을 수없는 것 같습니다 ( Documents and Settings\[user])

답변:


324

당신은 실망 할 것입니다 : %userprofile%

그러나 다른 터미널을 사용할 수 있습니다. XP 이상을 얻을 수 있다고 생각하는 Powershell (Win7이 사전 설치되어 제공됨)을 사용 ~하면 홈 디렉토리 로 사용할 수 있습니다 .


39

당신은 %HOMEDRIVE%%HOMEPATH%드라이브 + \docs settings\username또는 할 수 있습니다 \users\username.


3
이 답변은 로컬 시스템 계정으로 실행되는 서비스에 효과적이었습니다. 이 경우 % userprofile %는 그렇지 않습니다.
DonBecker

15

%systemdrive%%homepath%이를 위해 환경 변수를 사용할 수 있습니다 .

연결된 두 명령 변수는 아래와 같이 원하는 사용자의 홈 디렉토리 경로를 제공합니다.

  1. 실행 echo %systemdrive%명령 프롬프트에하는 수 있습니다 :

    C:
    
  2. 실행 echo %homepath%명령 프롬프트에하는 수 있습니다 :

    \Users\<CurrentUserName>
    

함께 사용하면 다음과 같이됩니다.

C:\Users\<CurrentUserName>

또한 % homedrive %가 필요합니다. 위의 Alex K의 답변 참조
Edward Falk

2
@EdwardFalk 내 대답을 수정했습니다. Alex %systemdrive%%homedrive%언급 한 것과 동일한 환경 변수 에 대해서는 언급하지 않았습니다 . 잘못된 것을 발견하면 이에 대한 의견을 보내 주시기 바랍니다.
RBT

8
Windows에서는 전체 사용자 폴더를 다른 드라이브 (예 : D : \ MyUser)로 옮길 수 있습니다. 이러한 시나리오에서는 % systemdrive %% homepath %가 실패합니다. 대신 % HOMEDRIVE %% HOMEPATH %를 사용해야합니다.
Daniel Santos

진실. 가능하지만 사람들이 이러한 표준 환경 변수를 변경하는 것은 일반적이지 않습니다. 일반적인 회사 환경에서 이러한 환경 변수는 여기여기에 언급 된 AD 그룹 정책을 통해 IT 부서에서 관리 합니다 .
RBT

6

업데이트 -2019 년 7 월 18 일 더 나은 버전 .

최종 요약은 대부분의 Windows 콘솔 작업을 위해 powershell로 이동했지만이 오래된 cmd 문제를 마무리하기로 결정했지만 오늘은 cmd 콘솔을 사용해야 했으며이 기능이 부족하여 실제로 충격을 받았습니다. 이것은 마지막으로 공백으로도 작동하며 이전 답변이 실패합니다.

또한이 파일은 ~를 다른 홈 하위 폴더의 접두사로도 사용할 수 있으며 슬래시를 백 슬래시로 바꿉니다. 여기 있습니다.

단계 1. 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")

또한, 게으른 인용을 허용합니다. 공백이 폴더 경로 이름에 있더라도 모든 인수를 마치 하나의 긴 문자열 인 것처럼 래핑하기 때문에 유용합니다. 즉, 첫 번째 인용 만 작동하거나 따옴표없이 완벽하게 작동합니다.

아래의 다른 모든 내용은 이제 무시 될 수 있습니다. 역사적 이유로 남아 있습니다. 따라서 다시는 같은 실수를하지 않습니다.


오래된 업데이트 10월 19일 2018
의 경우 사람에서 다른, 내 원래의 대답은 아래의 실패 다음, 예를 들어, 공백을 처리하지 않은 나의 접근 방식을 시도했다.

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

나는 그것을 해결할 수있는 방법이 있어야한다고 생각합니다. 답변을 개선 할 수 있으면 다시 게시합니다. (위 참조, 마침내 내가 원하는 방식으로 작동하도록했습니다.)


내 원래의 대답, 여전히 일이 필요했습니다 ... 2018 년 10 월 7 일.
오늘 방금 해보려고 했는데 , 생각합니다. 이것이 잘 작동하는 것입니다.

먼저, 일부 도스 키 매크로;

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

이 답변에는 .bashrc형식 파일 ( superuser.com/questions/144347/…)로 CMD를 시작하는 방법이 있습니다. 이 답변에서 1 단계를 bashrc.bat파일에 넣으면 시작시 설정됩니다.
Brydenr

2

Jay의 짧은 버전을 원한다면 시도해 볼 수 있습니다.

    set usr=%userprofile%
    cd %usr%

또는 원하는 경우 % u %를 사용할 수도 있습니다 . 어쨌든 일부 키 입력을 저장합니다.


2

거의 똑같이 할 수 있습니다. 환경 변수를 열고 "...에 대한 사용자 변수"에서 "새로 작성"단추를 클릭하십시오.
변수 이름 : ~
변수 값 : "디렉토리 찾아보기 ..."버튼을 클릭하고 원하는 디렉토리를 선택하십시오.

그런 다음 cmd를 열고
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

이식성을 유지하면서 너무 많은 타이핑없이이 작업을 수행하는 스크립트를 작성하기 만하면 각 Windows PC에서 수동 설정 ~%userprofile%필요하도록 설정하고 디렉토리의 일부로 디렉토리를 복제하고 설정하는 PATH것이 기계적인 것입니다.

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



-5

홈 디렉토리로 이동하는 폴더 수만큼 cd ...... \를 수행 할 수도 있습니다. 예를 들어, 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.