获取当前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。