Windows “之间的差异%~dp0“;及"\&引用;?
假设我正在使用一个批处理文件,并希望它直接指向位于批处理的同一目录中的文件夹。如果我没记错的话,你会写“%~dp0\whateverfoldername”。但是写“\whateverfoldername”就不能做到这一点吗?如果是这样,那么相应命令的区别和/或优点是什么?Windows “之间的差异%~dp0“;及"\&引用;?,windows,batch-file,cmd,Windows,Batch File,Cmd,假设我正在使用一个批处理文件,并希望它直接指向位于批处理的同一目录中的文件夹。如果我没记错的话,你会写“%~dp0\whateverfoldername”。但是写“\whateverfoldername”就不能做到这一点吗?如果是这样,那么相应命令的区别和/或优点是什么?“\将定位于当前的目录,因此,如果您使用CD命令更改了目录,那么您将查看该目录,而不是批次所在的目录 事实上,创建一个单独的目录是很正常的,通常称为\batch或者\bellfry来保存批处理文件。如果,所讨论的bat位于路径上
“\
将定位于当前的目录,因此,如果您使用CD
命令更改了目录,那么您将查看该目录,而不是批次所在的目录
事实上,创建一个单独的目录是很正常的,通常称为\batch
或者\bellfry
来保存批处理文件。如果,所讨论的bat
位于路径上,它将被定位。%dp0
将生成.bat
的位置
pushd %~dp0
通常用于更改为启动批处理的原始目录。
这在较新的操作系统中非常有用,因为用户可以“以管理员身份运行”,这会为您更改当前目录!请稍后再试。只需制作一个简单的bat
@echo off
echo.CD=%CD%
pushd %~dp0
echo.CD=%CD%
pause
现在运行它。
现在在Vista、Win 7、Win 8、2008 Server或2012 Server上以管理员身份再次运行它。
看到发生了什么吗?也许你可以。但是如果当前目录不是你希望的位置,那将失败得很惨。这将是作为管理员运行的结果…因此你按照下面的RGuggisberg所说的做。我现在明白了。这很有帮助,我明白为什么需要dp0。但是pushd和cd之间有什么区别吗?回答自己:我们之间的区别en pushd和cd是pushd存储POPD命令使用的以前的文件夹/路径。POPD将目录更改回pushd命令最近存储的路径/文件夹。Boom。我爱你们,谢谢!如果您需要将根目录遍历到另一个驱动器,pushd可以无缝工作,而对于cd,您需要使用带有/d参数的cd或者调用CD,然后键入驱动器名。我认为我们可以始终使用PUSHD而不是CD。为此,在我的自定义shell中,我使用以下命令将CD替换为PUSHD:'doskey CD=PUSHD$*'现在,您可以执行类似'CD C:\win*\sy*32'的操作,然后执行'popd'返回。此外,工作目录可能与脚本d的父目录不同我正在讨论脚本是如何启动的。