如何在Windows中获取批处理脚本的路径?

我知道%0包含批处理脚本的完整路径,例如c:\path\to\my\file\abc.bat

我将path等于c:\path\to\my\file

我怎么才能做到呢?

426873 次浏览

%~dp0将是目录。这里有一些关于所有路径修饰符的文档。有趣的东西:-)

要删除最后的反斜杠,可以使用:n,m子字符串语法,如下所示:

SET mypath=%~dp0
echo %mypath:~0,-1%

不幸的是,我不相信有一种方法可以将%0语法与:~n,m语法结合起来。

这将是%CD%变量。

@echo off
echo %CD%

%CD%返回批处理脚本所在的当前目录。

%~dp0可能是一个相对路径。 要将其转换为完整路径,可以尝试以下方法:

pushd %~dp0
set script_dir=%CD%
popd

您可以使用以下脚本来获取路径,而不需要以“\”结尾。

for %%i in ("%~dp0.") do SET "mypath=%%~fi"

您可以使用%~dp0, d表示仅用于驱动器,p表示仅用于路径,0是批处理文件的完整文件名的参数。

例如,如果文件路径是C:\Users\Oliver\Desktop\example.bat,那么参数将等于C:\Users\Oliver\Desktop\,你也可以使用命令set cpath=%~dp0 && set cpath=%cpath:~0,-1%并使用%cpath%变量删除后面的斜杠。

%cd%将提供脚本运行所在目录的路径。

运行:

echo %cd%

% ~ dp0 -返回脚本执行的路径

但是,重要的是下面还要知道一个:

%CD% -返回运行时的当前路径,例如,如果你使用“cd folder1"进入其他文件夹,然后使用“cd folder2",它将返回folder2之前的完整路径,而不是脚本所在的原始路径