2013-04-08 289 views
7

比方说,我正在使用批处理文件,并希望它指向位于同一批处理目录中的文件夹。如果我没有错,你会写“%〜dp0 \ anyfoldername”。但是,只能写“。\ anyfoldername”才能做到这一点吗?如果是这样,各个命令有何区别和/或优势?“%〜dp0”和“。”之间的区别?

+1

也许你可以。但是,如果当前目录不在您希望的位置,那将会惨败。 – 2013-04-08 23:37:53

+0

这将导致作为管理员运行...因此你做什么RGuggisberg下面说..我现在得到它lol – user2259606 2013-04-09 00:30:31

回答

17
pushd %~dp0 

通常用于更改为启动批处理的原始目录。 当用户可以'以管理员身份运行'时,这在更新的操作系统中非常有用,它可以为您更改当前目录!尝试一下。只是做一个简单的蝙蝠

@echo off 
echo.CD=%CD% 
pushd %~dp0 
echo.CD=%CD% 
pause 

现在运行它。 现在在Vista,Win 7,Win 8,2008 Server或2012 Server上再次运行'以管理员身份'。 看看会发生什么?

+0

好吧,这有助于很多,我明白为什么需要dp0。但pushd和cd有什么区别? – user2259606 2013-04-09 00:27:49

+0

回答自己:pushd和cd之间的区别在于pushd存储了POPD命令使用的上一个文件夹/路径。 POPD将目录更改回最近由PUSHD命令存储的路径/文件夹。繁荣。我爱你们,谢谢! – user2259606 2013-04-09 00:40:17

+1

如果您需要遍历根目录到另一个驱动器,PUSHD可以无缝工作,而使用CD则需要使用带有/ d参数的CD或调用CD,然后键入驱动器名称。 – 2013-04-09 13:46:23

3

".\将对于CURRENT目录中找到,因此,如果您更改目录与​​CD命令,那么定定地看着THAT目录,而不是目录中该批次所在。

实际上,创建一个单独的目录(通常称为\batch或可能是\belfry)来保留批处理文件是正常的。如果问题,bat位于path上,它将被定位。 %dp0将产生.bat的位置。

+0

此外,工作目录可能会不同于脚本的父目录取决于如何启动脚本。 – 2013-04-09 09:25:41

相关问题