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

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



답변

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

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


답변

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


답변

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

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

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

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

    \Users\<CurrentUserName>
    

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

C:\Users\<CurrentUserName>


답변

업데이트 -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..)


답변

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

    set usr=%userprofile%
    cd %usr%

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


답변

거의 똑같이 할 수 있습니다. 환경 변수를 열고 “…에 대한 사용자 변수”에서 “새로 작성”단추를 클릭하십시오.

변수 이름 : ~

변수 값 : “디렉토리 찾아보기 …”버튼을 클릭하고 원하는 디렉토리를 선택하십시오.

그런 다음 cmd를 열고
cd % ~ %를
입력하십시오

. 효과가있다.


답변

방금 시도했지만 set ~=%userprofile%동일한 습관을 계속 사용하고 싶다면 효과가 있습니다.

그런 다음 %~%대신 사용할 수 있습니다 .