将当前目录更改为批处理文件目录

Gra*_*ton 34 windows batch-file

bat在 Windows 上有一个执行procdump操作的文件。批处理文件的问题是我需要在执行作业之前先 cd 到批处理文件目录,否则脚本将无法工作。

如何切换到当前批处理文件目录?

我在我的中尝试了以下代码procdump.bat

cd "%~dp"
procdump -h devenv.exe mydump.txt
Run Code Online (Sandbox Code Playgroud)

但是失败了,错误信息是:

批处理参数替换中路径运算符的以下用法无效:%~dp"

对于有效格式,请键入 CALL /? 或为 /?

编辑:提供的答案有效,但只有一个问题:如果我的当前目录与批处理文件目录不同,那么我会得到“系统找不到指定的路径”。任何人有任何想法?

fre*_*tje 51

好的,我想我在这里找到了你的意思%~dp

我认为你真正想做的是:

cd /D "%~dp0"
Run Code Online (Sandbox Code Playgroud)

(!) 但请注意,当您尝试在当前目录位于另一个驱动器上时执行批处理时,这仍然不会为您提供正确的行为,因为cd不会更改活动驱动器。

编辑:显然(感谢@Yoopergeek)您可以将/D参数添加到cd命令中,让它也更改活动驱动器。


Yoo*_*eek 10

我会对fretje的回答发表评论,但显然我不能???


无论如何,关于注意:
但是请注意,当您尝试在当前目录位于另一个驱动器上时执行批处理时,这仍然不会为您提供正确的行为,因为 cd 不会更改活动驱动器。


使用/DCD 命令中的开关,CD 将更改活动驱动器。


idb*_*rii 7

您可以pushd "%~dp0"转到批处理文件的目录 - 即使它位于另一个驱动器上。此外,这还可以让您popd回到原来的地方。