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

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

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

我怎么能实现这一目标?

回答(5)

3 years ago

%~dp0 将是目录 . Here's some documentation on all of the path modifiers . 好玩的东西 :-)

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

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

不幸的是,我没有't believe there'将 %0 语法与 :~n,m 语法结合起来的方法 .

3 years ago

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

pushd %~dp0
set script_dir=%CD%
popd

3 years ago

您可以使用以下脚本来获取路径而不尾随“\”

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

3 years ago

这将是 %CD% 变量 .

@echo off
echo %CD%

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

3 years ago

我正在使用Windows 7机器,我最终使用下面的行来获取我的bash脚本的绝对文件夹路径 .

看完http://www.linuxjournal.com/content/bash-parameter-expansion后,我得到了这个解决方案 .

#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder