昨天安装ClearCase的时候遇到的一个问题。
安装过程中需要执行一个批处理文件:
xcopy /s/d/y/r "%cd%\*.dll" "C:\Program Files\Common Files\Rational\ClearCase\CCVSI\bin\"
regsvr32 "C:\Program Files\Common Files\Rational\ClearCase\CCVSI\bin\ActivityGridContainer.dll"
regsvr32 "C:\Program Files\Common Files\Rational\ClearCase\CCVSI\bin\ActivityWkspcContainer.dll"
regsvr32 "C:\Program Files\Common Files\Rational\ClearCase\CCVSI\bin\CQPackage.dll"
pause
这个批处理的目的是把这个批处理所在目录里的所有dll文件复制到一个特定目录,然后注册一下。
由于是在win8系统,有权限控制,直接双击执行不了,于是右键以管理员身份执行了一下,结果发生了一件糟糕的事情。该脚本将我“C:\Windows\system32”目录下的dll文件全部复制了过去。原来当以管理员身份执行的时候,命令的执行路径变为了“C:\Windows\system32”。
脚本中的
%cd%
应该换成
%~dp0
,具体原因参见:
DOS批处理中%cd%和%~dp0的区别