批处理文件,用于读取它所在的根目录

时间:2017-10-25 21:07:41

标签: batch-file

是否有批处理命令可以在没有整个路径的情况下读取根目录?

我想要一个批处理文件告诉我它是否在D:\E:\

我试图使用:

set mypath=%cd%
@echo %mypath%
Pause

但它只是说它所在的确切位置而不仅仅是根。

3 个答案:

答案 0 :(得分:4)

以下是一些提供脚本当前目录的根目录的选项:

使用PushD / Popd

PushD\&Call Set "RootDir=%%CD%%"&PopD
Echo(%RootDir%
Pause

使用For循环

For %%A In (%CD%) Do Set "RootDir=%%~dA\"
Echo(%RootDir%
Pause

使用变量扩展

Set "RootDir=%CD:~,3%"
Echo(%RootDir%
Pause

修改

再次阅读你的问题之后,我决定添加第四个例子。与其他三个不同的是,这提供了批处理文件位置的根目录。

Set "RootDir=%~d0\"
Echo(%RootDir%
Pause

答案 1 :(得分:2)

批处理文件所在的目录可能与cmd.exe运行的当前目录不同。

要使用批处理文件根路径:

for %%a in ("%0") do echo %%~da

要使用当前目录

echo "%cd:~0,3%"

答案 2 :(得分:2)

让我们不要忘记& REM技巧。

@ECHO OFF
set "root=%cd:\="&rem %
echo %root%