Board logo

标题: [其他] 批处理使用win7管理权限运行后路径丢失怎样解决? [打印本页]

作者: sirliu    时间: 2011-2-7 20:25     标题: 批处理使用win7管理权限运行后路径丢失怎样解决?

开启UAC的win7环境,有些操作需要管理权限,但是右键批处理,使用管理员权限运行批处理后,运行出错,具体情况是批处理启动时所在的路径丢失。
请测试
批处理测试代码:
  1. @echo off
  2. echo %cd%
  3. pause>nul
复制代码
批处理启动路径:
任意非C:\Windows\System32\目录,意思就是不要放在C:\Windows\System32\目录里,不然就没有测试意义了。

测试方法:
第一步:
以普通方式启动批处理——即双击运行批处理。结果:
[attach]3425[/attach]



第二步:
右键批处理使用管理员权限运行批处理。
结果:
[attach]3426[/attach]

[ 本帖最后由 sirliu 于 2011-2-7 20:39 编辑 ]
作者: sirliu    时间: 2011-2-7 20:33

正如大家所看到的
路径丢失了~~~~
作者: sirliu    时间: 2011-2-7 20:39

哈哈  哥在百度上找到解决办法了 共享给大家
高手的解决办法
链接是:
http://www.cnblogs.com/TianFang/archive/2010/04/29/1724505.html
  1. 一般来说,批处理文件处理相对路径的时候,起始位置是bat文件所在的目录,比如在D:\XX目录下执行bat文件,所有相对目录的操作都会以D:\XX下执行。
  2. 但是有些命令需要管理员权限,右键选择以管理员身份运行时后,起始位置则为C:\Windows\system32,这时候往往不是我们所想要的,
  3. 一种解决解决办法是在批处理的行首加一句"cd D:\XX”进入该目录,以修改其当前位置,但这样需要在批处理文件中加入绝对路径,如果把bat文件移动到其它位置就无法使用了,此时一种更好的方式是用"cd /d %~dp0”代替"cd D:\XX”。
  4. 综上所述,在写bat文件的时候,不管是否需要用到管理员权限,最好在行首加一句"cd /d %~dp0",以统一文件的起始目录。
复制代码
此贴留作备份吧。
作者: c_mang    时间: 2013-3-7 13:32

"cd /d %~dp0”
——引号需要加上?




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2