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


18

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

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

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

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

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

在批处理参数替换中,路径运算符的以下用法无效:%〜dp“

对于有效格式,请输入CALL /?还是FOR /?

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


您从哪里获得“%〜dp”?
fretje

Answers:


24

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

我认为您真正想要做的是:

cd /D "%~dp0"

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

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


有关这些批处理参数的更多信息,请help callcmd提示符下查看。
暂停,直到另行通知。

顺便说一下,您可以像这样组合这些参数:%~dp0
已暂停,直到另行通知。

您的回答很有帮助;但是,如果当前目录与批处理文件不在同一目录,则上述命令将失败;甚至cd /D还是cd "%~dp0" /D无济于事。
重力1998年

@Ngu Soon Hui:很明显,您当前的目录与批处理文件的目录不同。但是,为什么该命令会失败?我已经在这里对其进行了测试,并且可以正常工作。
fretje

1
我通过使用找到了解决方案cd /D "%~dp0"。谢谢。
Graviton 2010年

4

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


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


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


...但是我可以对自己的回答发表评论。伙计,很烂,没有ServerFault上的代表...希望一些SO代表“流血”到这里。
Yoopergeek

1
@Yoopergeek:您可以关联您的帐户。这会给你这里100代表如果对SO代表高于200
fretje
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.