比如我当前的bat是存放在d盘的1文件夹里,作用是判断后将我想要的文件复制到我所输入的新路径的文件夹里,然后我直接运行的话是正常实现需求的,但是一旦我用管理员身份运行的话就复制到system32里面去了,具体脚本如下:
rem 源文件所在路径 (目标文件是放在共享上的)
set patch_dir=\192.168.16.26\源文件夹
rem 目标路径 (原本这里定位到当前文件夹是用%cd%,百度后说%~dp0可以用在管理员身份运行,/p用于获取我输入想放的文件夹)
set /p work_dir=%~dp0
rem 目标文件清单
set txt=%~dp0\目标清单.txt
rem 执行遍历复制
for /f %%i in (%txt%) do (xcopy %patch_dir%\%%i*.exe %work_dir%\%%i /s /e /i)
pause
发现用%~dp0确实可以在管理员运行下获取到当前路径,但是后面的复制还是将文件复制到system32里面去了,现在的情况是我bat和txt都在d盘文件夹1下,正常运行时我输入test可以将获取的文件放到d:\1\test下,但是如果我用管理员身份运行的话,文件就变成在system32/test里面了,请问这是哪里错了?