我正在尝试使用命令提示符移动一些文件, 我习惯了linux终端,在那里我使用~来指定我的主目录 我到处都找遍了,但我似乎找不到windows命令提示符(文档和设置\[user])
当前回答
更新-更好的版本2019年7月18日。
最后总结,尽管我已经转移到powershell的大多数windows控制台工作,但我决定结束这个旧的cmd问题,我今天必须上一个cmd控制台,这个功能的缺乏真的让我震惊。这个问题最终也适用于空格,而我之前的答案可能会失败。
此外,这个文件夹现在也可以使用~作为其他home子文件夹的前缀,并且还可以将正斜杠转换为反斜杠。就是这样;
步骤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日。 我今天就试着这么做了,我想我懂了,我觉得这个很管用;
首先,一些dokey宏;
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..)
其他回答
我刚刚尝试设置~=%userprofile%,如果你想继续使用相同的习惯,这也是有效的
您可以使用%~%来代替。
您可以使用%homedrive%%homepath%环境变量来完成此操作。
这两个命令变量连接在一起时,将为您提供所需用户的主目录路径,如下所示:
在命令提示符上执行echo %homedrive%给出: C: 在命令提示符上运行echo %homepath%会得到: 用户\ \ < CurrentUserName >
当一起使用%homedrive%%homepath%它给出:
C:\Users\<CurrentUserName>
如果你想要一个比杰的短一点的版本,你可以试试
set usr=%userprofile%
cd %usr%
如果你愿意,你甚至可以使用%u%。它节省了一些按键。
您可以%HOMEDRIVE%%HOMEPATH%为驱动器+ \docs设置\用户名或\users\用户名。
使用% systemdrive % % homepath %。%systemdrive%给出驱动器字符(主要是C:), %homepath%给出用户主目录(\Users\<USERNAME>)。
推荐文章
- 如何在windows中使用命令提示符(cmd)列出文件。我试过在Linux中使用“ls”,但它显示一个错误?
- 修改一个目录下所有文件和文件夹的权限为644/755
- BAT文件执行后保持CMD打开
- 如何在命令提示符中使用空格?
- 使用“start”命令并将参数传递给已启动的程序
- 如何编写多行命令?
- 批处理文件:查找子字符串是否在字符串中(不是在文件中)
- 如何从批处理文件创建空文本文件?
- cmd /C是什么意思?
- Windows批处理:无新行回显
- 在批处理文件中测试参数是否为空的正确方法是什么?
- Javac不能被视为内部或外部命令、可操作程序或批处理文件
- Node.js -以平台不可知的方式查找主目录
- 如何用批处理脚本对目录中的每个文件做一些事情
- 在windows的命令行上创建一个空文件(如linux的touch命令)