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

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

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

我怎么能做到这一点?

%~dp0将是目录。 这是所有path修饰符的一些文档 。 好玩的东西 :-)

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

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

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

%~dp0可能是一个相对path。 要将其转换为完整path,请尝试如下所示:

 pushd %~dp0 set script_dir=%CD% popd 

您可以使用以下脚本获取path,而不会拖尾“\”

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

这将是%CD%variables。

 @echo off echo %CD% 

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

我在Windows 7机器上工作,我已经结束了使用下面的行来获得我的bash脚本的绝对文件夹path。

查看http://www.linuxjournal.com/content/bash-parameter-expansion后,我find了这个解决scheme。;

 #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