Windows命令提示符下〜(用户主目录)的替代方法是什么?

问题描述 投票:152回答:9

我正在尝试使用命令提示符移动一些文件,我习惯了linux终端,我使用~来指定我的主目录我到处都看,但我似乎无法找到它的Windows命令提示符( Documents and Settings\[user]

command command-prompt home-directory
9个回答
273
投票

你会感到失望:%userprofile%

但是,您可以使用其他终端。 Powershell,我相信你可以使用XP及更高版本(并预装Win7),允许你使用~作为主目录。


36
投票

你可以%HOMEDRIVE%%HOMEPATH%驱动器+ \docs settings\username\users\username


12
投票

您可以使用%systemdrive%%homepath%环境变量来完成此任务。

连接时的两个命令变量为您提供所需用户的主目录路径,如下所示:

  1. 在命令提示符下运行echo %systemdrive%给出: C:
  2. 在命令提示符下运行echo %homepath%给出: \Users\<CurrentUserName>

当一起使用时,它变成:

C:\Users\<CurrentUserName>

3
投票

你自己也可以做同样的事情。打开环境变量,然后单击“用户变量...”中的“新建”按钮。 变量名称:〜 变量值:单击“浏览目录...”按钮,然后选择所需的目录。

然后,打开cmd并键入: cd%〜% 。有用。


2
投票

如果你想要更短版本的周杰伦,你可以试试

    set usr=%userprofile%
    cd %usr%

或者如果你愿意,你甚至可以使用%u%。无论如何它还能节省一些击键次数。


2
投票

我只是尝试了set ~=%userprofile%,如果你想继续使用相同的习惯,那也是有效的

然后你可以使用%~%代替。


2
投票

更新 - 更好的版本2019年7月18日。

最后的总结,即使我已经转向大多数Windows控制台工作的powershell,但我决定将这个旧的cmd问题包起来,我今天必须登上cmd控制台,而这个功能的缺乏真的让我感到震惊。这个最终也适用于空格,我以前的答案会失败。

另外,现在这个也可以使用〜作为其他家庭子文件夹的前缀,并且它也可以将正斜杠交换为反斜杠。所以这就是;

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

哦,它也允许延迟引用,我发现它很有用,即使空格位于文件夹路径名中,因为它包装了所有参数,就像它是一个长字符串一样。这意味着只是一个初始引用也可以,或完全没有引号也有效。

下面的所有其他内容现在可能会被忽略,这是由于历史原因 - 所以我不会再犯同样的错误


旧更新2018年10月19日。 如果其他人尝试我的方法,我在下面的原始答案没有处理空格,例如,以下失败。

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

我认为必须有办法解决这个问题。如果我可以改进我的答案,将再次发布。 (见上文,我终于按照我想要的方式完成了所有工作。)


我的原始答案,仍然需要工作...... 2018年10月7日。 我今天只是想做到这一点,我想我明白了,这是我认为运作良好的;

首先,一些doskey宏;

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

然后是我路径中的一个bat文件;

cdtilde.bat

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

所有这些似乎都很好;

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

0
投票

刚写了一个脚本,没有太多打字,同时保持可移植性,因为将~设置为%userprofile%需要在每台Windows PC上进行手动设置,而克隆和设置目录作为PATH的一部分是机械的。

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


-4
投票

您也可以执行cd ...... \,因为有多个文件夹可以将您带到主目录。例如,如果你在cd:\ windows \ system32,那么cd .... \带你到家里,那就是c:\

© www.soinside.com 2019 - 2024. All rights reserved.