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

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

bat在 Windows 上有一个执行进程转储操作。批处理文件的问题是,我需要先 cd 到批处理文件目录,然后再执行作业,否则脚本将无法工作。

如何更改当前批处理文件目录?

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

cd "%~dp"
procdump -h devenv.exe mydump.txt

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

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

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

编辑:提供的答案可以正常工作,但只有一个问题:如果我的当前目录与批处理文件目录不同,那么我会收到“系统找不到指定的路径”的消息。有人有什么想法吗?

答案1

好的,我想我找到了这里你 的 意思 是 什么%~dp.

我认为你真正想做的是这样的:

cd /D "%~dp0"

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

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

答案2

我本想对 fretje 的回答留下评论,但显然我不能???


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


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

答案3

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

相关内容