获取当前batch file目录

首先,我看到这个话题,但我不明白这一点。

题 :

D:\path\to\file.bat有一个batch file,内容如下:

 echo %cd% pause 

输出是:

 C:\ 

它必须是D:\path\to

我究竟做错了什么?

系统只读variables%CD%保留批处理调用程序的path,而不是batch file位置。

您可以获取用户使用%0键入的批处理脚本本身的名称(例如scripts\mybatch.bat )。 参数扩展可以应用于此,所以%~dp0将返回批处理脚本的驱动器和path(例如W:\scripts\ ), %~f0将返回完整的path名(例如W:\scripts\mybatch.cmd )。

您可以使用以下语法引用与批处理脚本相同的文件夹中的其他文件:

 CALL %0\..\SecondBatch.cmd 

这甚至可以在子程序中使用, Echo %0会给出呼叫标签,但echo "%~nx0"会给你批处理脚本的文件名。

%0variables被展开时,结果被括在引号中。

更多关于批处理参数 。

很简单:

 setlocal cd /d %~dp0 File.exe 

在您的.bat文件中:

 set mypath=%cd% 

您现在可以使用variables%mypath%来引用.bat文件的文件path。 要validationpath是否正确:

 @echo %mypath% 

例如,一个名为DIR.bat的文件具有以下内容

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

从目录g:\test\bat将在DOS命令窗口中回显该path。