也就是说,在含有UNC路径的时候,%cd%已经不再是当前文件夹。
想起批处理中的几种路径扩展,于是忍不住来比了一把,批处理内容如下:
@echo off cls echo %~0 echo %~f0 echo %~d0 echo %~p0 echo %~n0 echo %~x0 echo %~s0 echo %~a0 echo %~t0 echo %~z0 pause
内容很简单,就是把几种扩展路径打印出来,0代表第一个输入参数,即批处理文件本身(test.bat),当然也可以是%~1,%~2等,这里1,2就代表第二、第三个输入参数。
在本地(C盘)运行,得到如下结果:
现在,把test.bat放到局域网,得到如下结果:
(图中抹去的部分是一个IP地址)
可以看到,%~0和%~f0都是扩展到全路径的文件名,%~d0是扩展到根路径,%~p0是扩展到除去根路径的子路径名(不包括文件名),%~n0和%~x0分别扩展文件名和文件后缀名。还有s,a,t,z等扩展不是扩展路径,在此不多说,但从图上也很容易看出其作用。
所以,根据上图来看,用%~dp0就可以在有UNC路径的情况下来表示当前文件夹。因此,推荐在批处理中都用%~dp0来表示当前文件夹,而不要用%cd%。
最新评论