biggod_
2015-08-05 07:23
采纳率: 100%
浏览 4.6k
已采纳

bat管理员身份运行批处理下的路径问题

比如我当前的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里面了,请问这是哪里错了?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • biggod_ 2015-11-06 07:51
    已采纳

    无满意答案,关闭帖子,结

    打赏 评论
  • 柳鲲鹏 2019-09-02 12:00

    本来bat在别的目录,以管理员身份运行,目录就是windows/System32,bat执行不了。这就傻眼了。

    参考网上很多说法,终于找到了唯一正确做法:

    cd /d "%~dp0"

    注意:

    前后必须有双引号!
    /d具有自动切换盘符功能。

    1 打赏 评论
  • oyljerry 2015-08-05 11:51

    你管理员运行cmd,然后cd到d盘目录。再执行bat

    打赏 评论

相关推荐 更多相似问题