Batch file 如何获取批处理文件的路径作为变量?
如何获取批处理文件的路径作为变量 例如,我发现我可以使用Batch file 如何获取批处理文件的路径作为变量?,batch-file,path,cmd,Batch File,Path,Cmd,如何获取批处理文件的路径作为变量 例如,我发现我可以使用%cd%获取当前正在执行的批处理文件的目录,但是如果我从第一个批处理文件调用第二个批处理文件,第二个文件中的%cd%将指向第一个文件的目录 谢谢。你搞错了。正如文档(帮助集)明确指出的那样 %CD% - expands to the current directory string. 因此,它不是批处理文件的目录,而是当前工作目录,与PowerShell中的$pwd相同。它可能是当前正在执行的批处理文件的目录,但前提是当前目录相同 您需要
%cd%
获取当前正在执行的批处理文件的目录,但是如果我从第一个批处理文件调用第二个批处理文件,第二个文件中的%cd%
将指向第一个文件的目录
谢谢。你搞错了。正如文档(
帮助集
)明确指出的那样
%CD% - expands to the current directory string.
因此,它不是批处理文件的目录,而是当前工作目录,与PowerShell中的$pwd
相同。它可能是当前正在执行的批处理文件的目录,但前提是当前目录相同
您需要的是
%~dp0
,它将评估调用的驱动器和路径,即批处理文件。太好了,谢谢您的快速回复。我发现这相当令人困惑——当前工作目录和当前正在执行的批处理文件目录之间的差异。每个进程都有一个当前工作目录。在shell中,这就是您使用cd
、pushd
、popd
等更改的内容。更改当前工作目录不会移动文件,在别处执行程序或批处理文件也不会改变当前工作目录。您可以通过键入D:\foo.cmd`从C:`启动批处理文件,工作目录仍然是`C:`,即使批处理文件的目录在别处。