PUSHD/POPD是为了获得bat文件执行的路径。
这个很实用,比如我们想在程序里调用bat文件,bat文件内容如下,先安装一个windows service,然后启动它:
installutil.exe /i "MyWindowsService.exe" net.exe start "MyWindowsService"
如果我是在做一个安装程序,我需要把这些文件包括bat文件先copy到一个安装目录,而且这个目录一般是用户自己选择的,安装程序并不知道。那我们要想让安装程序调用这个bat文件,就需要把bat文件写成这样:
PUSHD "%~dp0" //获得bat文件执行的路径 installutil.exe /i "MyWindowsService.exe" net.exe start "MyWindowsService" POPD
当然,为了保险起见,我们需要把installutil.exe和net.exe(都在c:\windows\system32\)copy到和bat文件相同的目录。这是为了保证有些操作系统可能是精简版或没有这些工具,安装程序也能顺利进行。