获取当前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"
会给你批处理脚本的文件名。
当%0
variables被展开时,结果被括在引号中。
更多关于批处理参数 。
很简单:
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。